我没有 GPU,但我可以从
openbuddy-llama3-8b-v21.1-8k
运行 ollama
。它的工作速度约为 1 t/s。
但是当我尝试以下代码时它不起作用:
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
GenerationConfig,
)
import torch
new_model = "openbuddy/openbuddy-llama3-8b-v21.1-8k"
model = AutoModelForCausalLM.from_pretrained(
new_model,
device_map="auto",
trust_remote_code=True,
torch_dtype=torch.bfloat16,
low_cpu_mem_usage=True,
)
tokenizer = AutoTokenizer.from_pretrained(
new_model,
max_length=2048,
trust_remote_code=True,
use_fast=True,
)
tokenizer.pad_token = tokenizer.eos_token
tokenizer.padding_side = "right"
prompt = """<|im_start|>system
You are a helpful AI assistant.<|im_end|>
<|im_start|>user
Как открыть брокерский счет?<|im_end|>
<|im_start|>assistant
"""
inputs = tokenizer.encode(
prompt, return_tensors="pt", add_special_tokens=False
).cpu()
generation_config = GenerationConfig(
max_new_tokens=700,
temperature=0.5,
top_p=0.9,
top_k=40,
repetition_penalty=1.1,
do_sample=True,
pad_token_id=tokenizer.eos_token_id,
eos_token_id=tokenizer.eos_token_id,
)
outputs = model.generate(
generation_config=generation_config,
input_ids=inputs,
)
print(tokenizer.decode(outputs[0], skip_special_tokens=False))
看起来
model.generate
的运行速度比从 ollama
运行要慢得多。
我看到该进程仅使用 25% 的 cpu。
我哪里错了?
据我了解 -
transformers
比ollama
慢得多,它是一个主要针对gpus优化的库。
我尝试过:
import ollama
response = ollama.chat(
model="openbuddy/openbuddy-llama3-8b-v21.1-8k",
messages=[
{
"role": "user",
"content": "Как открыть брокерский счет?",
},
],
)
print(response["message"]["content"])
效果完美。