项目概述
Saiga_llama3_8b 是一个基于 Llama-3 8B 的俄语对话机器人项目。该项目的目的是研发一个能够理解并回答用户提问的俄语自动化助手。它能够帮助用户解决问题或提供信息支持。Saiga_llama3_8b 基于 Meta-Llama-3-8B Instruct 模型进行开发,并且使用了一些特定的数据集进行训练,如 IlyaGusev/saiga_scored 等。
模型特性与使用
Saiga_llama3_8b 使用了一种特殊的提示格式,这种格式已经过多次改版。在最新的第4版、第5版和第6版中,提示格式为 Llama-3 格式,而在较早的版本中(第2版和第3版),使用的是 ChatML 提示格式。
提示格式
在第4版以后,Saiga_llama3_8b 使用的是 Llama-3 提示格式。这种格式的基本结构如下:
<|begin_of_text|><|start_header_id|>system<|end_header_id|>
Ты — Сайга, русскоязычный автоматический ассистент. Ты разговариваешь с людьми и помогаешь им.<|eot_id|><|start_header_id|>user<|end_header_id|>
Как дела?<|eot_id|><|start_header_id|>assistant<|end_header_id|>
Отлично, а у тебя?<|eot_id|><|start_header_id|>user<|end_header_id|>
Шикарно. Как пройти в библиотеку?<|eot_id|><|start_header_id|>assistant<|end_header_id|>
这种格式强调了角色的转变,比如从系统到用户再到助手的变化。
样例代码
以下是一段 Python 代码,展示了如何加载和使用 Saiga_llama3_8b 模型:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
MODEL_NAME = "IlyaGusev/saiga_llama3_8b"
DEFAULT_SYSTEM_PROMPT = "Ты — Сайга, русскоязычный автоматический ассистент. Ты разговариваешь с людьми и помогаешь им."
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME,
load_in_8bit=True,
torch_dtype=torch.bfloat16,
device_map="auto"
)
model.eval()
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
generation_config = GenerationConfig.from_pretrained(MODEL_NAME)
inputs = ["Почему трава зеленая?", "Сочини длинный рассказ, обязательно упоминая следующие объекты. Дано: Таня, мяч"]
for query in inputs:
prompt = tokenizer.apply_chat_template([
{"role": "system", "content": DEFAULT_SYSTEM_PROMPT},
{"role": "user", "content": query}
], tokenize=False, add_generation_prompt=True)
data = tokenizer(prompt, return_tensors="pt", add_special_tokens=False)
data = {k: v.to(model.device) for k, v in data.items()}
output_ids = model.generate(**data, generation_config=generation_config)[0]
output_ids = output_ids[len(data["input_ids"][0]):]
output = tokenizer.decode(output_ids, skip_special_tokens=True).strip()
print(query)
print(output)
print()
print("==============================")
print()
这段代码主要演示了如何加载模型和生成输出。注意,不建议在生产环境中直接使用该代码,而应参考专业的推理框架。
版本历史
Saiga_llama3_8b 已经进行过多次版本迭代,从 v2 发展到 v7。这些版本之间主要差异在于数据集和模型配置的更新。例如,在 v7 版本中,使用了 saiga_llama3_8b_abliterated_sft_m11_d7_kto_m7_d7 作为新的模型配置。
评价与效果
项目使用了一套特定的评估框架,来评测其生成能力与其他模型(比如 chatgpt 和 sfr)的比较结果。其中,Saiga_llama3_8b 版本6和版本7的生成效果接近 ChatGPT 3.5 Turbo,但与 ChatGPT 4 Turbo 还有一定差距。
总之,Saiga_llama3_8b 作为一个俄语对话机器人,提供了一种友好和智能的用户交互方式,期待随着版本的不断升级,该项目能为更多俄语用户带来便利。