В этой статье я расскажу как развернуть локальные аналог Chat-GPT и настроить VS Code для работы с ним.
LLama — это языковая модель с открытым исходным кодом от компании Meta (признана экстремистской организацией в этой стране), которая отличается «нетребовательностью» к железу и может запускаться даже на «слабых» машинах. LLama.CPP — утилита для запуска языковых моделей LLama локально. Она имеет ряд преимуществ перед облачными решениями. Во-первых, LLama.CPP обеспечивает полную приватность, так как ваши данные обрабатываются локально без передачи в облако. Это исключает возможность слежки со стороны той же АНБ, бывшие сотрудники которой работают в совете директоров OpenAI (разработчик ChatGPT). Во-вторых, использование LLama.CPP — это единственный способ использовать некоторые языковые модели в России, так как существует проблема с оплатой и доступом к зарубежным облачным сервисам из-за санкций.
Для запуска LLama.CPP лучше всего использовать docker. Убедитесь что у вас установлены docker
и docker-compose
. Так же потребуется не менее 24 GB RAM и желательно наличие видеоускорителя не ниже RTX 3050.
Первым шагом создадим рабочую директорию и скачаем необходимые модели:
mkdir ~/workspace/llama-cpp
cd ~/workspace/llama-cpp
mkdir models && cd models
# Модель для чата
wget https://huggingface.co/TheBloke/CodeLlama-7B-Instruct-GGUF/resolve/main/codellama-7b-instruct.Q4_K_M.gguf
# Модель для автодополнения кода
wget https://huggingface.co/second-state/StarCoder2-3B-GGUF/resolve/main/starcoder2-3b-Q4_K_M.gguf
Я выбрал не самые требовательные модели. На Hugging Face можно поискать другие модели. Чем больше потребляет памяти модель, тем она лучше. Вместе с потреблением RAM растут и требования к железу. Читайте описание.
Следующим шагом создадим файл ~/workspace/lama-cpp/docker-compose.yml
, который позволит запустить модели в контейнерах:
services:
codellama:
image: ghcr.io/ggerganov/llama.cpp:server
ports:
- "8080:8080"
volumes:
- ./models:/models
command: -c 2048 -t 4 -m models/codellama-7b-instruct.Q4_K_M.gguf --host 0.0.0.0 --port 8080
restart: unless-stopped
starcoder2:
image: ghcr.io/ggerganov/llama.cpp:server
ports:
- "8081:8080"
volumes:
- ./models:/models
command: -c 2048 -t 4 -m models/starcoder2-3b-Q4_K_M.gguf --host 0.0.0.0 --port 8080
restart: unless-stopped
В этом файле определены два сервиса: один для модели CodeLlama, другой для StarCoder. После того как файл будет создан, запускаем Docker Compose в каталоге с ним:
docker compose up -d
Это запустит два сервера, к которым можно будет подключаться для использования моделей. Подробное описание всех доступных ключей для настройки сервера можно найти в документации LLama.CPP.
Проверим:
curl http://localhost:8080/v1/models
Если сервер запущен правильно, вы получите ответ, содержащий информацию о доступных моделях.
Для интеграции языковых моделей в Visual Studio Code можно использовать расширение Continue, которое позволяет настраивать автодополнение и чатовые функции. Запускаем VS Code, жмем Ctrl-P
и выполняем:
ext install Continue.continue
После установки необходимо настроить расширение для работы с локальными серверами. Для этого создайте или отредактируйте файл конфигурации ~/.continue/config.json
:
{
"models": [
{
"title": "codellama 7b",
"provider": "llama.cpp",
"model": "models/codellama-7b-instruct.Q4_K_M.gguf",
"apiBase": "http://localhost:8080"
}
],
// ...
"tabAutocompleteModel": {
"title": "starcoder2 3b",
"provider": "llama.cpp",
"model": "models/starcoder2-3b-Q4_K_M.gguf",
"apiBase": "http://localhost:8081"
}
}
Я долго искал что нужно писать в поле model
, если оставить его пустым ничего работать не будет. Вроде можно просто написать starcoder2-3b-Q4_K_M
, но это не точно. Про автодополнение можно почитать тут.
Так же можно использовать LM Studio — приложение, которое помогает скачивать модели и запускать сервера для работы с ними. В Arch Linux его можно установить из AUR:
yay -S lmstudio-appimage
В остальных дистрах разве что кроме Nix придется скачивать .AppImage
с сайта.
Теперь ваш Visual Studio Code готов к работе с локальными языковыми моделями, которые помогут в программировании, предоставляя мощные функции автодополнения и интеллектуальных подсказок. Использование LLama.CPP и расширения Continue делает этот процесс простым и гибким, позволяя адаптировать рабочее окружение под ваши нужды.