模型简介
模型特点
模型能力
使用案例
🚀 Llama-Krikri-8B-Instruct:面向希腊语的指令调优大语言模型
Llama-Krikri-8B-Instruct是基于Llama-3.1-8B扩展而来的大语言模型,通过在大量高质量希腊语文本上持续预训练,增强了对希腊语的处理能力,在多语言任务中表现出色。
🚀 快速开始
使用Transformers库
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda"
model = AutoModelForCausalLM.from_pretrained("ilsp/Llama-Krikri-8B-Instruct")
tokenizer = AutoTokenizer.from_pretrained("ilsp/Llama-Krikri-8B-Instruct")
model.to(device)
system_prompt = "Είσαι το Κρικρί, ένα εξαιρετικά ανεπτυγμένο μοντέλο Τεχνητής Νοημοσύνης για τα ελληνικα και εκπαιδεύτηκες από το ΙΕΛ του Ε.Κ. \"Αθηνά\"."
user_prompt = "Σε τι διαφέρει ένα κρικρί από ένα λάμα;"
messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt},
]
prompt = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
input_prompt = tokenizer(prompt, return_tensors='pt').to(device)
outputs = model.generate(input_prompt['input_ids'], max_new_tokens=256, do_sample=True)
print(tokenizer.batch_decode(outputs)[0])
通过vLLM使用兼容OpenAI的服务器
vllm serve ilsp/Llama-Krikri-8B-Instruct \
--enforce-eager \
--dtype 'bfloat16' \
--api-key token-abc123
然后,可以通过Python使用该模型:
from openai import OpenAI
api_key = "token-abc123"
base_url = "http://localhost:8000/v1"
client = OpenAI(
api_key=api_key,
base_url=base_url,
)
system_prompt = "Είσαι ένα ανεπτυγμένο μεταφραστικό σύστημα που απαντάει με λίστες Python. Δεν γράφεις τίποτα άλλο στις απαντήσεις σου πέρα από τις μεταφρασμένες λίστες."
user_prompt = "Δώσε μου την παρακάτω λίστα με μεταφρασμένο κάθε string της στα ελληνικά: ['Ethics of duty', 'Postmodern ethics', 'Consequentialist ethics', 'Utilitarian ethics', 'Deontological ethics', 'Virtue ethics', 'Relativist ethics']"
messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt},
]
response = client.chat.completions.create(model="ilsp/Llama-Krikri-8B-Instruct",
messages=messages,
temperature=0.0,
top_p=0.95,
max_tokens=8192,
stream=False)
print(response.choices[0].message.content)
# ['Ηθική καθήκοντος', 'Μεταμοντέρνα ηθική', 'Συνεπειοκρατική ηθική', 'Ωφελιμιστική ηθική', 'Δεοντολογική ηθική', 'Ηθική αρετών', 'Σχετικιστική ηθική']
✨ 主要特性
- 多语言支持:支持希腊语和英语,在两种语言的指令遵循和聊天能力上表现出色。
- 翻译能力:能够进行希腊语与英语、法语、德语、意大利语、葡萄牙语、西班牙语之间的文档翻译。
- 任务表现优秀:在生成、理解和编辑任务(如摘要、创意内容创作、文本修改、实体识别、情感分析等)上有出色表现。
- 领域专业知识:在法律、金融、医疗和科学等专业领域有特定的专业知识。
- 长上下文处理:支持128k上下文长度的检索增强生成(RAG)。
- 编码和代理能力:具备改进的编码和代理能力,能正确格式化和使用工具。
- 数据转换和提取:能够在数据到文本和文本到数据的设置中进行转换或结构化提取(如XML、JSON)。
- 分析思维和推理能力:具备分析思维和思维链(CoT)推理能力,用于解决问题。
📦 安装指南
文档未提及具体安装步骤,可参考上述快速开始部分的代码示例进行使用。
💻 使用示例
基础用法
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda"
model = AutoModelForCausalLM.from_pretrained("ilsp/Llama-Krikri-8B-Instruct")
tokenizer = AutoTokenizer.from_pretrained("ilsp/Llama-Krikri-8B-Instruct")
model.to(device)
system_prompt = "Είσαι το Κρικρί, ένα εξαιρετικά ανεπτυγμένο μοντέλο Τεχνητής Νοημοσύνης για τα ελληνικα και εκπαιδεύτηκες από το ΙΕΛ του Ε.Κ. \"Αθηνά\"."
user_prompt = "Σε τι διαφέρει ένα κρικρί από ένα λάμα;"
messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt},
]
prompt = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
input_prompt = tokenizer(prompt, return_tensors='pt').to(device)
outputs = model.generate(input_prompt['input_ids'], max_new_tokens=256, do_sample=True)
print(tokenizer.batch_decode(outputs)[0])
高级用法
from openai import OpenAI
api_key = "token-abc123"
base_url = "http://localhost:8000/v1"
client = OpenAI(
api_key=api_key,
base_url=base_url,
)
system_prompt = "Είσαι ένα ανεπτυγμένο μεταφραστικό σύστημα που απαντάει με λίστες Python. Δεν γράφεις τίποτα άλλο στις απαντήσεις σου πέρα από τις μεταφρασμένες λίστες."
user_prompt = "Δώσε μου την παρακάτω λίστα με μεταφρασμένο κάθε string της στα ελληνικά: ['Ethics of duty', 'Postmodern ethics', 'Consequentialist ethics', 'Utilitarian ethics', 'Deontological ethics', 'Virtue ethics', 'Relativist ethics']"
messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt},
]
response = client.chat.completions.create(model="ilsp/Llama-Krikri-8B-Instruct",
messages=messages,
temperature=0.0,
top_p=0.95,
max_tokens=8192,
stream=False)
print(response.choices[0].message.content)
# ['Ηθική καθήκοντος', 'Μεταμοντέρνα ηθική', 'Συνεπειοκρατική ηθική', 'Ωφελιμιστική ηθική', 'Δεοντολογική ηθική', 'Ηθική αρετών', 'Σχετικιστική ηθική']
📚 详细文档
模型信息
基础模型
- 词汇扩展:对Llama-3.1分词器的词汇表进行扩展,加入希腊语标记。
- 上下文长度:具有128k的上下文长度(约80,000个希腊语单词)。
- 预训练扩展:通过利用大量训练语料库,扩展了Llama-3.1-8B的预训练,增强了对希腊语的熟练度。该语料库包括:
- 567亿单语希腊语标记,由公开可用资源构建。
- 额外使用单语英语文本子语料库(210亿标记)和希腊语 - 英语平行数据(55亿标记),以减轻灾难性遗忘并确保模型具备双语能力。
- 训练语料库还包含78亿数学和代码标记。
- 该语料库经过处理、过滤和去重,以确保数据质量,具体如下: | 子语料库 | 标记数量 | 百分比 | | ---- | ---- | ---- | | 希腊语 | 567亿 | 62.3% | | 英语 | 210亿 | 23.1% | | 平行数据 | 55亿 | 6.0% | | 数学/代码 | 78亿 | 8.6% | | 总计 | 910亿 | 100% |
选择的910亿语料库子集经过上采样,最终大小达到1100亿标记。
指令模型
Llama-Krikri-8B-Instruct是对Llama-Kriki-8B-Base进行后训练的结果,具有以下特点:
- 增强的聊天和指令遵循能力:在希腊语和英语中都具备增强的聊天能力和指令遵循能力。
- 文档翻译:能够进行希腊语与英语、法语、德语、意大利语、葡萄牙语、西班牙语之间的文档翻译。
- 任务表现优秀:在生成、理解和编辑任务(如摘要、创意内容创作、文本修改、实体识别、情感分析等)上有出色表现。
- 领域专业知识:在法律、金融、医疗和科学等专业领域有特定的专业知识。
- 长上下文处理:支持128k上下文长度的检索增强生成(RAG)。
- 编码和代理能力:具备改进的编码和代理能力,能正确格式化和使用工具。
- 数据转换和提取:能够在数据到文本和文本到数据的设置中进行转换或结构化提取(如XML、JSON)。
- 分析思维和推理能力:具备分析思维和思维链(CoT)推理能力,用于解决问题。
后训练方法
采用多阶段过程构建Llama-Krikri-8B-Instruct,包括:
- 两阶段监督微调:结合希腊语和英语的指令 - 响应对(及多轮对话)。
- 阶段1:856,946个指令 - 响应对(371,379个希腊语 + 485,567个英语)。
- 阶段2:638,408个指令 - 响应对(279,948个希腊语 + 358,460个英语)。
- 对齐:结合希腊语和英语的偏好三元组(指令 - 选择的响应 - 拒绝的响应)。
- 长度归一化DPO:92,394个偏好三元组(47,132个希腊语 + 45,262个英语)。
后训练数据构建
为构建SFT和DPO数据,采用了多种方法,包括:
- 收集现有高质量数据集:如Tulu 3、SmolTalk、MAGPIE Ultra、Orca Agent Instruct、IFEval Like Data、UltraFeedback、NVIDIA HelpSteer2、Intel Orca、UltraMedical等专注于安全性、真实性和指令遵循的数据集。
- 翻译数据:使用内部翻译工具将各种数据翻译成希腊语。
- 再生和对比数据:再生翻译后的数据,并对比翻译后的响应和再生后的响应(用于创建偏好三元组)。
- 模型蒸馏:使用MAGPIE方法蒸馏在希腊语中表现出色的模型,如Gemma 2 27B IT。
- 数据评分和过滤:使用Skywork Reward Gemma 2 27B v0.2奖励模型对数据进行评分,并使用基于规则的过滤器进行过滤。
- 创建翻译数据:使用主要来自ELRC - SHARE的高质量平行语料库,创建用于句子和文档翻译的数据。
- 合成提取数据:从维基百科、EUR - LEX、希腊学校书籍和Kallipos等不同来源合成提取问答对和多轮对话。
评估
聊天评估套件
在以下聊天评估套件中报告了分数:
- 希腊语IFEval(严格平均)
- 英语IFEval(严格平均)
- 希腊语MT - Bench,使用gpt - 4o - 2024 - 08 - 06作为评判模型。
- 英语MT - Bench,使用gpt - 4o - 2024 - 08 - 06作为评判模型。
可以观察到,Llama-Krikri-8B-Instruct在希腊语和英语的指令遵循方面表现最强。特别是,在希腊语和英语IFEval中分别比Llama-3.1-8B-Instruct高出**+21.7%和+7.3%。它在希腊语MT - Bench基准测试中也表现出最强的聊天能力**(与Aya Expanse 8B相比高出+0.28),同时在英语MT - Bench基准测试中也具有很强的竞争力。
模型 | IFEval EL(严格平均) | IFEval EN(严格平均) | MT - Bench EL | MT - Bench EN |
---|---|---|---|---|
Qwen 2.5 7B Instruct | 46.2% | 74.8% | 5.83 | 7.87 |
EuroLLM 9B Instruct | 51.3% | 64.5% | 5.98 | 6.27 |
Aya Expanse 8B | 50.4% | 62.2% | 7.68 | 6.92 |
Meltemi 7B v1.5 Instruct | 32.7% | 41.2% | 6.25 | 5.46 |
Llama-3.1-8B Instruct | 45.8% | 75.1% | 6.46 | 7.25 |
Llama-Krikri-8B Instruct | 67.5% | 82.4% | 7.96 | 7.21 |
Arena - Hard - Auto评估
还使用了Arena - Hard - Auto自动评估工具,以及公开可用的希腊语翻译(和后期编辑)版本这里。报告了Arena - Hard - Auto的两个分数:
- 无风格控制:基准测试的原始版本。
- 有风格控制:带有Markdown元素风格控制方法的基准测试。可以在此博客中了解更多关于方法和技术背景的信息。
以下是使用gpt - 4o - 2024 - 08 - 06作为评判模型和gpt - 4o - mini - 2024 - 07 - 18作为基线模型(即默认分数为50%)确定的各种开放和封闭聊天模型在希腊语版本Arena - Hard - Auto中的分数。
Llama-Krikri-8B Instruct表现出非常强的聊天能力,得分高于其大小8倍以上的模型(如Llama - 3.1 - 70B Instruct),并且与闭源模型(如GPT - 4o - Mini)和高性能开源模型(如Gemma 2 27B IT和Aya Expanse 32B)也具有竞争力。
以下是各种开放和封闭聊天模型在原始Arena - Hard - Auto数据集上的分数。遵循原始方法,使用gpt - 4 - 1106 - preview作为评判模型和gpt - 4 - 0314作为基线模型。
Llama-Krikri-8B Instruct在英语版本的Arena - Hard - Auto中也表现出色,可以观察到它与类似大小的大语言模型具有竞争力,并且比Llama - 3.1 - 8B Instruct提高了**+24.5% / +16%**(无风格控制/有风格控制)。
请注意,评判模型可能会偏向于使用从它们蒸馏的数据训练的学生模型。可以在这里了解更多信息。
🔧 技术细节
后训练方法
采用两阶段监督微调结合希腊语和英语的指令 - 响应对,以及使用希腊语和英语偏好三元组进行对齐的方法,具体参数和数据量如上述详细文档部分所述。
评估方法
使用多种评估套件和自动评估工具,如IFEval、MT - Bench和Arena - Hard - Auto,采用特定的评判模型和基线模型进行评估,以确保评估的准确性和可靠性。
📄 许可证
本模型使用llama3.1许可证。
⚠️ 重要提示
- 请使用官方量化版本,由于模型权重已更新,不能保证使用第三方量化版本能获得最新改进版本。
- 评判模型可能会偏向于使用从它们蒸馏的数据训练的学生模型,可参考相关文档了解更多信息。
💡 使用建议
可根据具体任务需求,调整模型的参数(如温度、top_p等),以获得更好的结果。在使用过程中,可参考上述详细文档和使用示例进行操作。



