LINUX.ORG.RU

Настройка Visual Studio Code для работы с LLama

 , , ,

Настройка Visual Studio Code для работы с LLama

3

2

В этой статье я расскажу как развернуть локальные аналог 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 делает этот процесс простым и гибким, позволяя адаптировать рабочее окружение под ваши нужды.

★★

Проверено: hobbit ()
Последнее исправление: rtxtxtrx (всего исправлений: 4)

Очередной нейроскам? Язабан

mittorn ★★★★★
()
Последнее исправление: mittorn (всего исправлений: 1)

Много тут неосиляторов, которые не понимают, что Chat GPT здорово экономит время на гуглении. Он не знает больше чем Google или тот же SO, но в дополнении к просто стягиванию кода из топа выдачи, он подобно бредогенераторам на цепях Маркова может выдавать вполне себе вменяемые тексы (исходного кода). Да это тупиковая ветвь в плане развития AI и им не является, но поставленную задачу выполняет

rtxtxtrx ★★
() автор топика
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от mittorn

ясно я состою в заговоре с продавцами видеокарт

rtxtxtrx ★★
() автор топика

Извините, что не по делу, но когда ваши статью открываю при людях вокруг, то мне эти обложки позволяют ощутить какой-то вторичный стыд. Можно даже сказать - мамочки! - кринж.

Ставьте весёлого парня, если согласны.

Bfgeshka ★★★★★
()

потребуется не менее 24 GB RAM

codellama-7b-instruct.Q4

starcoder2-3b-Q4

На 8гб RAM конечно будет тесновато, но один фиг какая-нибудь из моделек полностью на gpu уйдет, и в целом должно влезть. Куда 24гб то? Нейронка нагалюцинировала?

ei-grad ★★★★★
()
Последнее исправление: ei-grad (всего исправлений: 1)

И вообще открой для себя ollama :-). Вроде уже стало стандартом. (а под капотом та же llama.cpp)

ei-grad ★★★★★
()
Последнее исправление: ei-grad (всего исправлений: 1)
Ответ на: комментарий от ei-grad

Для них обеих нужно кажой по 6 с чем-то гигов, а для VS Code 6 - вот тебе и 18 + 6 гигов для жизни

rtxtxtrx ★★
() автор топика

Теперь ваш Visual Studio Code готов к работе с локальными языковыми моделями, которые помогут в программировании, предоставляя мощные функции автодополнения и интеллектуальных подсказок.

Можно примеры, как это работает?

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

По бублику нажимаешь там чат. Спрашиваешь его «есть два отсортированных списка напиши функцию для их объединения», автодополнение по нажатию на таб и из контекстного меню можно заставить код отрефакторить

rtxtxtrx ★★
() автор топика
Ответ на: комментарий от hobbit

Редакторы имеющие обратную совместимость с расришениями VS Code, те на основе Monaco Editor; а так же редакторы, использующие LSP протокол, для таких легко реализовать что-то типа https://github.com/github/copilot.vim

rtxtxtrx ★★
() автор топика
Ответ на: комментарий от hobbit

Высерами житбрейнсов я давно не пользуюсь, что там я не знаю, но возможно и они реализовали что-то такое в виде расширения. Я еще в 2017 понял что будущее за VS Code, потому как тормозная интерпретируемая Java ничем не лучше JavaScript, а в скорости разработки и порогу вхождения проигрывает + политика VS Code изначально была такая, что любой желающий мог расширение написать и опубликовать у них, а первая лютая проприетарщина. У Sublime Text точно есть - его любят ретрограды типа вимадрочеров, поэтому я удивлюсь, если для него расширения такого нет

rtxtxtrx ★★
() автор топика

Во-первых, LLama.CPP обеспечивает полную приватность, так как ваши данные обрабатываются локально без передачи в облако. Это исключает возможность слежки со стороны той же АНБ, бывшие сотрудники которой работают в совете директоров OpenAI (разработчик ChatGPT).

ещё одна статья от цукена ради того чтобы сказать почему не нужно пользоваться чатгпт)))

очень не добросовестная конкуренция)))

vstartsev
()
Ответ на: комментарий от rtxtxtrx

наброс на джаву слабенький. джава уделывает js

про скорость вхождения и разработки расскажете после лет 5 интенсивной разработки проекта на js или тупоскриптике

vstartsev
()

LLama.CPP — это утилита от Meta (признана экстремистской организацией) для запуска языковых моделей локально.

Нет. LLama — архитектура и обученные модели от Цукенберга.

А вот LLama.cpp (с суффиксом .cpp) это проект от сообщества, суть которого в запуске этой проприетарной модели. Об этом прямо написано:

Inference of Meta’s LLaMA model (and others) in pure C/C++

ox55ff ★★★★★
()
Ответ на: комментарий от rtxtxtrx

Высерами житбрейнсов

Единственные нормальные ide. Помни, что I в IDE означает интегрированная. Поэтому блокноты с пучком разношёрстных плагинов кое как работающих вместе, это не IDE. Это лагучее говно.

У житбрейнсов есть жирная модель, которая выполняется в облаке и просит денег. Но недавно сделали новую, которая работает полностью локально на cpu. Она умеет предлагать только однострочники, но качество там никакое.

ox55ff ★★★★★
()
Ответ на: комментарий от ox55ff

Поэтому блокноты с пучком разношёрстных плагинов кое как работающих вместе, это не IDE. Это лагучее говно.

Ясно. Не пробовал, но осуждаешь. Vim/NeoVim тоже говно? По дефолту это тоже просто блокнот или тот же Sublime? Они все примерно одинаково работают

In fact, JetBrains has its own implementation of LSP, called IntelliJ LSP, which provides language-specific features such as code completion, diagnostics, and code refactoring.

Блокнот получается?

Там и система плагинов со встроенными… В общем чушь несешь. Блокнот отличается от IDE как раз тем что в нем нет подсветки синтаксиса, синтаксического анализа, линтера, дебаггера и тд. В VS Code есть все необходимое для поддержки этих вещей, просто поставь нужный плагин. Это конструктор. В нем нет предустановленного плагина для джавы или похапе как у высеров идеи - это единственное отличие

rtxtxtrx ★★
() автор топика
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от ox55ff

У житбрейнсов есть жирная модель, которая выполняется в облаке и просит денег. Но недавно сделали новую, которая работает полностью локально на cpu. Она умеет предлагать только однострочники, но качество там никакое.

повод для слоупоков переехать. идея была модной и молодежной 10 лет назад, а ты как ретроград остался верен узким штанишкам из которых вырос, но уж сильно категоричен в суждениях.

rtxtxtrx ★★
() автор топика
Ответ на: комментарий от rtxtxtrx

Vim/NeoVim/sublime

Да, это блокноты. И пока они используются как блокноты к ним нет претензий. Но для разработки это говно.

Блокнот получается?

Нет, потому что разработчик один и тот же и всё интегрировано вместе. Это не разношёрстность как vscode.

ox55ff ★★★★★
()
Последнее исправление: ox55ff (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

Что за поток мыслей? Куда переезжать? На облачную ИИ? Их 10 лет назад не было. Но в любом случае нельзя, у меня комерческий проект и сливать исходники дяде в облако запрещено.

ox55ff ★★★★★
()
Ответ на: комментарий от ox55ff

Всё относительно. По сравнению с турбопаскалем любой набор из «IDE» и компилятора с отладчиком лагучее это самое.

Elyas ★★★★★
()

LLama.CPP

Зачем нужно было изменять имя? Проект называется llama.cpp.

dataman ★★★★★
()
Ответ на: комментарий от rtxtxtrx

не просто так кинул, а с намёком

rupert ★★★★★
()

И зачем нам оно надо?

Rodegast ★★★★★
()

LLama — это языковая модель с открытым исходным кодом от компании Meta

И где я могу скачать веса модели?

ya-betmen ★★★★★
()

Сколько тут ненавистников божественного Electron!

@firkax, поясните за что не любите вы Electron или нейронные сети?

rtxtxtrx ★★
() автор топика
Ответ на: комментарий от ya-betmen

Так они ж в моделях тех где-то. Распарсить никак?

rtxtxtrx ★★
() автор топика

Попытался пользоваться. Через небольшое время при редактировании кода llama-server для starcoder2 пожирает 4 ядра процессора навсегда.

Elyas ★★★★★
()
Ответ на: комментарий от rtxtxtrx

Chat GPT здорово экономит время на гуглении

Если гуглить по SO даже Chat GPT, результат будет г...о, вне зависимости от потраченного времени.

Shadow ★★★★★
()
Ответ на: комментарий от Shadow

ну это всего лишь тупая нейросеть ее ответ будет на техническом уровне вопроса. она часто «врет» еще и лучше всего код пишет на python

rtxtxtrx ★★
() автор топика

а что насчёт проброса видеокарты в докер?

для LocalAI нужно запускать докер с параметром --gpus

как я понял, только с этим параметром докер контейнер может использовать видеокарту, а чтобы этот параметр работал нужно ставить какие-то нестандартные пакеты

а в инструкции про этот параметр не сказано. оно без видео ускорения будет работать или что?

хотя вроде ещё сказано, нужна как минимум 3050. вообщем непонятно

instant
()

Нелишним было бы также указать объем требуемого пространства на ПЗУ, пусть даже если это не такой критичный фактор, как 24Гб ОЗУ.

seiken ★★★★★
()
Ответ на: комментарий от instant

В линуксе все эти видеокарты и прочие устройства - это лишь файлы типа /dev/nvidia0, которые можно примонтировать через --device. Я не знаю в этом образе есть ли все нужное из коробки, если нет, то можешь написать свой Dockerfile или найти на DockerHub/гитхабе готовое.

rtxtxtrx ★★
() автор топика
Ответ на: комментарий от seiken

так какие скачаешь модели - столько места и ОЗУ потребуется

rtxtxtrx ★★
() автор топика

2024 год. Чтобы ламер мог накодить свой скрипт ему нужна видеокарта с 10 гигами выделенной оперативы, docker, docker-compose и куча другого мусора.

Не, это прикольная игрушка, но тенденция печальная.

Почему видеокарта? Потому, что на CPU модельки рожают 1, 2 токена в секунду (i3-N305). А токен это половинка слова или вообще один знак.

somemong
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.