Text Generation
Russian
conversational

Saiga на GPU

#2
by maxschmaltz - opened

Привет Илья,

появился вопрос по использованию модели на GPU. Работаю с LangChain, пока что в Google Colab (потом планирую уйти на виртуалку с GPU); инициализирую и использую модель так же, как и обычную Llama2, передаю в RetrievalQA Chain, при этом на тех параметрах, с которыми Llama2 генерит ответ за 6-8 с, Saiga за 20 мин так ничего и не успела сгенерировать. Если есть опыт, не мог бы, пожалуйста, поделиться, как запускать модель на GPU?

Dependencies:

llama-cpp-python==0.1.77 (устанавливал с флагами CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 --force-reinstall)
langchain==0.0.264

Релевантный кусок кода (там есть DB retriever, ее создание опускаю):

from langchain.llms import LlamaCpp
from langchain.chains import RetrievalQA

llm = LlamaCpp(
    model_path='./models/ggml-model-q8_0.bin',
    n_ctx=2048,
    n_batch=512,
    n_gpu_layers=16,
    temperature=0,
    max_tokens=4096
)

qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type='stuff',
    retriever=retriever
)

query = ...

qa_chain(query)

В итоге с последней командой модель генерит ответ, но очень медленно, как я говорил, за 20 мин не успел сгенериться цельный фрагмент текста.

Дополнительно: если есть опыт, как себя модель ведет при увеличении числа одновременных запросов? Скажем, если вместо 1 пользователя будут с разных устройств посылать на мой сервер запросы 50, на сколько возрастет объем занятой VRAM в GPU? Можно ли это как-то рассчитать? Если есть какие-либо комментарии, буду благодарен.

Любые релевантные комментарии могут пригодиться. Заранее спасибо!

Best,
Макс

Прекрасно , я уже парюсь с langchain во всех конфигах модели

  1. Есть же Saiga2: https://huggingface.co/IlyaGusev/saiga2_7b_gguf
  2. В README не просто так лежит скрипт запуска, у Сайги свой формат промпта, которому нужно следовать
  3. Даже на CPU скорость генерации быстрее, чем описанная, см. https://huggingface.co/spaces/IlyaGusev/saiga2_13b_ggml
  4. Почему n_gpu_layers=16? В LLaMA-7B 32 слоя.
  5. max_tokens=4096 при максимальной длине контекста у Сайги в 2000
  6. Потестил saiga2_7b_gguf, получил 5 токенов в секунду при загрузке в GPU всех 32 слоёв.
  7. Зачем вообще использовать llama.cpp для инференса на GPU? Чистый transformers даёт задержку не хуже, я уж молчу про TGI.
  8. Про одновременные запросы — как сервер написан, так и будет вести. При наивном сервере — не возрастёт вообще, запросы просто в очереди лежать по паре десятков минут будут.

Привет Илья,

Супер, спасибо за подробный комментарий! Пока что я только начинаю с LLMs на более серьезном уровне, так что пока методом проб и ошибок. Буду разбираться)

Best,
Макс

Sign up or log in to comment