j0schihatake / NN_llama_cpp_docker

Как я знакомился с alpaca, llama.cpp, coboltcpp, cuda в docker и остальные премудрости ggml.

Repository from Github https://github.comj0schihatake/NN_llama_cpp_dockerRepository from Github https://github.comj0schihatake/NN_llama_cpp_docker

llama_cpp_java

-------------------------------------------------------------- Прочти МЕНЯ: -----------------------------------------------------------------

ВНИМАНИЕ, рекомендую использовать OLLAMA вместо этого решения.

Ссылка для Java разработчиков: https://amithkoujalgi.github.io/ollama4j/docs/intro

-------------------------------------------------------------- Процесс погружения: -----------------------------------------------------------------

Как я знакомился с alpaca, llama.cpp, coboltcpp, cuda в docker и остальные премудрости ggml.

Ветки:

main - просто llama в docker без автозапуска, клон запуска с локальной машины.

py_server - это интеграция с кодом рест сервиса на FastApi, за стет использования llama_cpp_python.

Видео инструкция: https://studio.youtube.com/video/KvYcHmUlMTc/edit

-------------------------------------------------------------- Процесс погружения: -----------------------------------------------------------------

Вступление:

Я начал изучение решений через ThensorFlow, далее StabbleDiffusion, а вот дальше уже chatGPT (для погружения можете но не обязательно использовать такой путь) Для входа в тему и ознакомления с alpaca, рекомендую:

https://habr.com/ru/news/723638/ --- отличная статья вкупе с роликом https://habr.com/ru/articles/724172/ --- но все же мне зашло только после ролика на youtobe

Далее пока вы еще не кинулись себе инсталлировать всякие там Pythorch и Thensor с Cuda а так-же pip, и не потонули в том что оказывается разные релизы разных библиотек нейронного обучения зависят, и или совместимы с различными комбинациями версий этих либ и их компонентов, сразу прошу, придержите коней, остудите пыл и почитайте про .env в python, это позволит вам не возвращаться по десять раз к переустановки локальной, предыдущих установленных сетей. Так-же как мне стало ясно дальше в целом безопасность пк начнет то там то тут испускать пар во все стороны, потому что вовлекшись вы рескуете как и я начать тащить себе готовые библиотеки и решения чтобы их скорее пощупать, собственно я опишу то к чему я пришел в самом конце файла, вас же прошу обратиться туда по возможности сейчас(строка 42).

Далее. Значит как и у всех, первым знакомством стал поиск java решений для работы с openApi и chatGPT3, что не проблема(ниже один из и тому подобных примеров):

https://gist.github.com/gantoin/190684c344bb70e5c5f9f2339c7be6ed

в итоге только за невозможностью оплатить доступ к официальным инструментам и последующей:

https://www.google.com/amp/s/habr.com/ru/amp/post/712534/ https://www.youtube.com/watch?v=ivXcInXR5jo --- уже дальше дообучение

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

Я больше работаю на java и c#(но и к с++ и python норм отношусь, но то в какую лепешку наступаешь при вхождении в it первой прилепает както по особенному)) ) так что стали интересны решения в интернете для реализации своей системы запоминания) именно на этих или около с минималкой языках, нашел некоторые примеры, но там доступ ведется в консоль, такое решил не копировать, сам своих велосипедов накурочить могу.

повлекло интерес к автономным решениям данной необходимости, тут конечно же всплыли alpaca, llama и coboldcpp

https://github.com/LostRuins/koboldcpp --- coboldcpp

https://github.com/Nuked88/alpaca.http --- alpaca rest на python, тут инетересно

https://github.com/ggerganov/llama.cpp --- llama.cpp

------------------------------------------------------------------- Среды и окружение --------------------------------------------------------------- я долго шел к этому и оно назрело, в той же llama.cpp я не сразу заметил пункты про docker да и не мудрено, почитав про llama.cpp я увидел упоминания переноса вычислений на GPU от чего сразу решил что вероятно это тогда точно сугубо локальное решение, и ни о какой alpaca конфетке с RaspberyPI речи не может идти. Каким же было мое удивление, когда я наткнулся на это:

https://learn.microsoft.com/ru-ru/windows/ai/directml/gpu-cuda-in-wsl https://github.com/NVIDIA/nvidia-docker

и тут все стало ясно, docker - наше все, никакие .env не нужны, image можно хранить и делать с ним все аля cd/cd-R диск из прошлого далее было вникание как развернуть то или иное решение в docker, что изэтого вышло опишу в следующих коммитах.

https://github.com/fbaldassarri/llama-cpp-container/tree/main https://github.com/ashleykleynhans/audiocraft-docker

LostRuins/koboldcpp#251 --> Я создал несколько образов docker для KoboldCPP, один только для CPU, а другой и для CPU, и для GPU (изображение только для CPU значительно меньше для тех, кто не использует GPU) Обновлено до версии 1.31.2 https://hub.docker.com/r/noneabove1182/koboldcpp-gpu https://hub.docker.com/r/noneabove1182/koboldcpp

Генерация аватара за бесплатно: https://www.youtube.com/watch?v=V2efVSXSlqc

Vicuna сборки

--------------------------------------------------------------------- Инструкция для запуска в Docker на Windows:

Для запуска docker требуется установить ubuntu и WSL2 Далее так же требуется установить поддержку NVIDIA_Container Tolkit: https://github.com/NVIDIA/nvidia-docker Инструкция от Microsoft: https://learn.microsoft.com/ru-ru/windows/ai/directml/gpu-cuda-in-wsl

Команда чтобы подтянуть образ и проверить видимость видеокарты: docker run -it --rm --gpus all ubuntu nvidia-smi

---- Отличный ответ по настройке: Я думаю, что лучший способ запустить графический процессор nVidia (CUDA) на WSL2 - это следовать руководству из документации nVidia по CUDA на WSL(https://docs.nvidia.com/cuda/wsl-user-guide/index.html). Есть три вещи, которые вам нужно сделать правильно и по порядку:

Сначала проверьте свою Windows на наличие обновлений, обновите, если таковые имеются. Затем вам нужно подписаться в программе Microsoft Windows Insider, в частности подписаться на канал разработчиков (Fast ring)(https://insider.windows.com/en-us/getting-started#install). Убедитесь, что установлено значение Dev channel, а не Beta Channel или Release Preview Channel. Для меня это была сложная часть: после выбора канала разработки проверьте свою версию Windows, запустив программу (winver) (найдите ее в строке поиска Windows), если она ниже 20145, повторно проверьте свою Windows на наличие обновления (вы увидите в описании обновления, что доступна версия выше 20145). Вам необходимо установить его, здесь вам нужно набраться терпения, потому что загрузка и установка обновления займет некоторое время, оно попросит вас перезагрузить Windows. После перезагрузки все готово (вы также заметите некоторые различия в дизайне между двумя версиями Windows). Проверьте еще раз свою версию Windows с помощью (winver), чтобы найти ее, она действительно выше 20145. Затем установите драйвер предварительного просмотра NVIDIA для WSL 2(https://developer.nvidia.com/cuda/wsl), это довольно простой процесс. Поэтапно, идем в Панель управления -> установка и удаление программ -> включение отключение компонентов виндовс -> включить пункт wsl подсистема linux в windows -> далее Microsoft Store установить Ubuntu -> выполнить первый запуск. Наконец, установите WSL2 из руководства(https://learn.microsoft.com/en-us/windows/wsl/install-win10), это тоже довольно простой процесс. Лично я следил за этим руководством на YouTube(https://www.youtube.com/watch?v=_fntjriRe48&ab_channel=DavidBombal) с канала Дэвида Бомбала. После правильного выполнения этих трех шагов вы можете следовать руководству nVidia по настройке CUDA Toolkit. Вот еще один документ nVidia(https://docs.nvidia.com/cuda/wsl-user-guide/index.html#running-cuda), в котором говорится о той же проблеме, с которой вы столкнулись в главе 8. Они утверждают(https://docs.nvidia.com/cuda/pdf/CUDA_on_WSL_User_Guide.pdf), что This error usually indicates that the right Microsoft Windows Insider Preview Builds, WSL 2, NVIDIA drivers and NVIDIA Container Toolkit may not be installed correctly.

Для меня это была моя версия сборки Windows Insider Preview, неправильно установленная на версию 20145 или выше.

--------------------------------------------------------------------- Запуск rest сервера: Видео про работу с телеграм ботом по рест: https://www.youtube.com/watch?v=PMFf9FwPN70

Так-же можно настроить установки на бекенде докера(версию wsl2) https://docs.docker.com/desktop/wsl/ Тут берем отдельный драйвер для Nvidea: https://docs.nvidia.com/cuda/wsl-user-guide/index.html

Хороший урок: https://www.youtube.com/watch?v=PB7zM3JrgkI

---------------------------------------------------------------------- Saiga2: https://habr.com/ru/articles/759386/ https://huggingface.co/spaces/IlyaGusev/saiga2_13b_gguf

About

Как я знакомился с alpaca, llama.cpp, coboltcpp, cuda в docker и остальные премудрости ggml.


Languages

Language:Dockerfile 100.0%