模型概述
模型特點
模型能力
使用案例
🚀 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等),以獲得更好的結果。在使用過程中,可參考上述詳細文檔和使用示例進行操作。



