diff --git a/src/pages/posts/2024/selfhosted_llm.md b/src/pages/posts/2024/selfhosted_llm.md
index 38014d1..1b6cdb1 100644
--- a/src/pages/posts/2024/selfhosted_llm.md
+++ b/src/pages/posts/2024/selfhosted_llm.md
@@ -43,9 +43,9 @@ description: 'Персональные LLM в docker-контейнере на
---
-
-
-## Установка и настройка
+
+ Установка и настройка
+
Существует несколько продуктов, которые стараются избавить пользователя от головной боли и возни с инфраструктурой. Мне понятнее всего оказался проект [Ollama](https://ollama.ai/), с ним мы и будем экспериментировать.
@@ -53,9 +53,9 @@ description: 'Персональные LLM в docker-контейнере на
Использование docker-контейнеров, к сожалению, слегка усложняет взаимодействие с Ollama, так что большая часть текста и кода в этом посте посвящены решению проблем, которые, по сути, я придумал себе сам.
-
-
-### Установка Ollama
+
+ Установка Ollama
+
Для создания и первого запуска контейнера нужно выполнить команду:
```
@@ -72,9 +72,9 @@ docker stop ollama
Контейнер предоставляет доступ к [Ollama API](https://github.com/jmorganca/ollama/blob/main/docs/api.md) на 11434 порту, а также позволяет устанавливать и общаться с установленными LLM через терминал.
-
-
-### Загрузка модели и диалог с ней
+
+ Загрузка модели и диалог с ней
+
Ollama позволяет запускать любые GGUF, PyTorch или Safetensors модели (что бы это ни значило), но самый простой путь — загрузка моделей из специальной [библиотеки](https://ollama.ai/library).
@@ -98,9 +98,9 @@ alias summon='clear && docker exec -it ollama ollama run'
summonable
summon phi
```
-
-
-### Кастомные модели и их тонкая настройка
+
+ Кастомные модели и их тонкая настройка
+
Ollama позволяет на основе существующих создавать производные модели с заранее определёнными инструкциями или параметрами. Для этого нужно создать специальный файл, в котором указана родительская модель и определены желаемые значения параметров. Подробнее о формате этих файлов можно прочесть в документации: [Modelfile](https://github.com/jmorganca/ollama/blob/main/docs/modelfile.md).
@@ -170,9 +170,9 @@ docker exec -it ollama ollama create $modelName -f $targetPath
summon EnglishTeacher
```
-
-
-## Использование
+
+ Использование
+
Разговоры с галлюцинирующим искусственным интеллектом в терминале — это, конечно, волшебно, но потенциал больших языковых моделeй по-настоящему раскрывается, когда они начинают портить данные в соседних приложениях!
@@ -180,9 +180,9 @@ summon EnglishTeacher
Не ручаюсь за весь список, но расскажу про то, с чем экспериментировал сам.
-
-
-### Мимикрия под API от OpenAI
+
+ Мимикрия под API от OpenAI
+
> В какой-то момент [в Ollama появилась поддержка совместимости с форматом API от OpenAI](https://ollama.com/blog/openai-compatibility) и этот раздел потерял актуальность.
@@ -224,9 +224,9 @@ docker run --net=host diy-ollama-proxy
```
После запуска вы получите API, который совместим с API от OpenAI и доступен по адресу `http://localhost:8000/`.
-
-
-### Интеграция с NeoVim
+
+ Интеграция с NeoVim
+
Языковые модели отлично умеют взаимодействовать с текстом, так что использование их в текстовом редакторе кажется разумной идеей.
@@ -295,9 +295,9 @@ docker run --net=host diy-ollama-proxy
Возможность добавления кастомных промптов позволяет в будущем реализовать новые сценарии или вынести повторяющиеся действия в отдельный пункт меню или даже на отдельный шорткат.
-
-
-## Обновление и удаление
+
+ Обновление и удаление
+
Для обновления и удаления моделей можно использовать команды `pull` и `rm`:
```
@@ -307,9 +307,9 @@ docker exec -it ollama ollama rm mistral
Я знаю, что для обновления и удаления docker-образов и docker-контейнеров тоже есть специальные команды (это тоже `pull` и `rm`), но каждый раз ленюсь в этом разобраться, просто сношу всё с помощью утилиты [sen](https://github.com/TomasTomecek/sen) и разворачиваю нужное заново.
-
-
-## Производительность
+
Для эксплуатации LLM требуется гораздо меньше ресурсов, чем для её обучения. Запустить 7b-модель средней тупости можно практически на любом CPU и 8 GB RAM, но нагрузка на систему и скорость генерации ответов часто будут далеки от комфортных значений.
@@ -319,9 +319,9 @@ docker exec -it ollama ollama rm mistral
Неприятным открытием стало то, что docker-версия Ollama на MacOS выполняется заметно медленнее (от 3 до 5 раз, если верить ощущениям), чем нативная. Возможно, всё дело в том, что я как-то неправильно настроил docker или приложение в контейнере нужно запускать с какими-нибудь специальными флагами для максимальной утилизации ресурсов. В любом случае, к порядку на этом ноутбуке я отношусь гораздо менее трепетно, поэтому просто установил и использую приложение с сайта Ollama.
-
-
-## Зачем всё это нужно?
+
+ Зачем всё это нужно?
+
Конечно, ChatGPT умнее и умеет из коробки гораздо больше.
Конечно, ChatGPT требует меньше телодвижений для использования.