Уведомления
Очистить всё

[Решено] Как разобраться в LLama (llama_cpp)


batya11
Сообщения: 1
Автор темы
(@batya11)
New Member
Присоединился: 2 года назад

Доброго времени!

Нашёл два разных примера (llama_cpp) для ответа на вопросы через LLM2,
первый работает с английским текстом (llama-2-7b.Q3_K_S.gguf —  https://huggingface.co/TheBlok… olve/main/),
второй с русским (model-q2_K.gguf —  https://huggingface.co/IlyaGus… olve/main/).

И вот в чём вопрос, 1-й пример отвечает сразу и за малое время может на несколько вопросов
ответить, 2-й же отвечает посимвольно и даже один вопрос занимает много времени.
Вопросы:
1) Почему первый пример так быстро работает на обычным ПК без GPU?
2) Как сделать чтобы вместо английского он также быстро и на русском отвечал?
3) Где взять нормальную языковую модель ещё кроме этой?
4) Может есть что-то получше чем llama_cpp? Но GUI и всё остальное вообще не нужно у меня не чат бот

 

Код примера

 

def get_answer(llm, prompt):

output = llm(
prompt, # Prompt
max_tokens=32, # Generate up to 32 tokens, set to None to generate up to the end of the context window
stop=[‘Q:’, ‘\n’], # Stop generating just before the model would generate a new question
echo=False # Echo the prompt back in the output
#echo=True # Echo the prompt back in the output
) # Generate a completion, can also call create_completion

return output

llm = Llama(
model_path=model_path,
n_gpu_layers=-1, # Uncomment to use GPU acceleration
)

questions = [
‘Q: Name the planets in the solar system? A: ‘,
]

for question in questions:

output = get_answer(llm, question)
print()
print(Fore.GREEN + question)
print(Fore.CYAN + str(output[‘choices’][0][‘text’]))

 


1 ответ
1 Ответ
Rikki
(@rikki)
Присоединился: 1 год назад

New Member
Сообщения: 1

Автор: @batya11
↑

Доброго времени!

Нашёл два разных примера (llama_cpp) для ответа на вопросы через LLM2,
первый работает с английским текстом (llama-2-7b.Q3_K_S.gguf —  https://huggingface.co/TheBlok… olve/main/),
второй с русским (model-q2_K.gguf —  https://huggingface.co/IlyaGus… olve/main/).

И вот в чём вопрос, 1-й пример отвечает сразу и за малое время может на несколько вопросов
ответить, 2-й же отвечает посимвольно и даже один вопрос занимает много времени.
Вопросы:
1) Почему первый пример так быстро работает на обычным ПК без GPU?
2) Как сделать чтобы вместо английского он также быстро и на русском отвечал?
3) Где взять нормальную языковую модель ещё кроме этой?
4) Может есть что-то получше чем llama_cpp? Но GUI и всё остальное вообще не нужно у меня не чат бот

Код примера

def get_answer(llm, prompt):

output = llm(
prompt, # Prompt
max_tokens=32, # Generate up to 32 tokens, set to None to generate up to the end of the context window
stop=[‘Q:’, ‘\n’], # Stop generating just before the model would generate a new question
echo=False # Echo the prompt back in the output
#echo=True # Echo the prompt back in the output
) # Generate a completion, can also call create_completion

return output

llm = Llama(
model_path=model_path,
n_gpu_layers=-1, # Uncomment to use GPU acceleration
)

questions = [
‘Q: Name the planets in the solar system? A: ‘,
]

for question in questions:

output = get_answer(llm, question)
print()
print(Fore.GREEN + question)
print(Fore.CYAN + str(output[‘choices’][0][‘text’]))

 

О, ну ты конкретно в дебри полез с этими моделями! Смотри, по твоим вопросам:

  1. Первая модель (llama-2-7b.Q3_K_S) быстрее потому что:

  • Это 7B параметров против 13B/30B у русской (меньше размер — быстрее инференс)

  • Используется квантование Q3_K_S (супер-легкое) против Q2_K у русской

  • Английские модели вообще лучше оптимизированы под CPU

  1. Чтобы русская работала быстрее:

  • Качай версию с квантованием Q4_K_M (оптима баланс скорость/качество)

  • В Llama() добавь n_threads=8 (или сколько ядер у CPU)

  • Поищи русскую модель на основе Mistral 7B — они шустрее

  1. Нормальные русские модели:

  • saiga_7b_lora (HF)

  • ruGPT-3.5-small (HF)

  • RussianAlpaca (но устарела)

  1. Альтернативы llama.cpp:

  • Ollama (проще установка)

  • GPT4All (есть GUI но можно и API)

  • exllama2 (для GPU)

По коду — попробуй увеличить max_tokens хотя бы до 128, а то 32 это слишком мало для нормального ответа. И n_gpu_layers=-1 ставь только если реально есть GPU, иначе тормозить будет.

P.S. Для чистого API без GUI — смотри FastChat или text-generation-webui в —api режиме. Они умеют русские модели нормально гонять.

 


Ответ
Поделиться: