Lingowhale 8B
模型概述
模型特點
模型能力
使用案例
🚀 語鯨-8B
語鯨-8B是深言科技推出的中英雙語大語言模型,在大量高質量數據上預訓練,有強大基礎能力。模型對學術研究開放,獲官方商用許可後可免費商用,還提供便捷推理接口和微調示例。
🚀 快速開始
您可通過以下鏈接訪問項目相關資源:
✨ 主要特性
- 雙語能力:在數萬億token的高質量中英數據上預訓練,支持中英雙語。
- 長上下文處理:預訓練階段使用8K上下文長度訓練,能完成長上下文理解和生成任務。
- 開放易用:對學術研究完全開放,商用申請通過後可免費商用,還提供Huggingface推理接口和參數高效微調示例。
📦 安裝指南
安裝依賴
pip install -r requirements.txt
⚠️ 重要提示
如需使用flash attention需要安裝flash-attn;如需使用LoRA等少參數微調方法需要額外安裝peft。
💻 使用示例
基礎用法
>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> tokenizer = AutoTokenizer.from_pretrained("deeplang-ai/LingoWhale-8B", trust_remote_code=True)
>>> model = AutoModelForCausalLM.from_pretrained("deeplang-ai/LingoWhale-8B", device_map="auto", trust_remote_code=True)
>>> inputs = tokenizer("陋室銘\n唐 劉禹錫\n", return_tensors="pt")
>>> inputs = inputs.to("cuda:0")
>>> pred = model.generate(**inputs, max_new_tokens=100, repetition_penalty=1.1)
>>> print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))
📚 詳細文檔
測評結果
我們在多個公開評測基準上對模型進行了測試,具體如下:
- C-Eval:中文基礎模型評估基準,用dev集作few-shot來源,在test集進行5-shot測試。
- MMLU:英文基礎模型評估基準,進行5-shot測試。
- CMMLU:中文評估基準,用dev集作few-shot來源,在test集進行5-shot測試。
- Gaokao:以中國高考題目為數據集的評估基準,保留四選一選擇題,隨機劃分後進行5-shot測試。
- HumanEval:英文評估基準,採用zero-shot計算Pass@1方法測試。
- GSM8K:小學數學應用題數據集,進行8-shot測試。
- BBH:從Big-Bench評測基準任務中選出的評估基準,進行3-shot測試。
- AGIEval:考察基礎模型類人能力的基準測試,保留四選一選擇題,隨機劃分後進行5-shot測試。
測評結果如下表所示:
模型 | C-Eval | MMLU | CMMLU | GAOKAO | HumanEval | GSM8K | BBH | AGIEval |
---|---|---|---|---|---|---|---|---|
5-shot | 5-shot | 5-shot | 5-shot | 0-shot | 8-shot | 3-shot | 5-shot | |
GPT-4 | 68.4 | 83.9 | 70.3 | 66.2 | 69.5 | 90.0 | 75.1 | 63.3 |
GPT-3.5 Turbo | 51.1 | 68.5 | 54.1 | 47.1 | 52.4 | 57.8 | 61.6 | 46.1 |
LLaMA2-7B | 28.9 | 45.7 | 31.4 | 26.0 | 12.8 | 16.2 | 39.2 | 26.5 |
ChatGLM2-6B* | 51.7 | 47.9 | - | - | - | 32.4 | 33.7 | - |
百川2-7B基礎版* | 54.0 | 54.2 | 57.1 | 47.5 | 18.3 | 24.5 | 41.6 | 42.7 |
通義千問-7B v1.1* | 63.5 | 58.2 | 62.2 | - | 29.9 | 51.7 | 45.0 | - |
語鯨-8B基礎版 | 63.6 | 60.2 | 62.8 | 50.3 | 32.9 | 55.0 | 47.5 | 43.8 |
*表示其模型結果來自於官方, 所有的結果都精確到小數點後1位。
生成樣例
以下是使用基於LingoWhale-8B模型微調後的對話模型生成的樣例:
數學計算
問題:f(x)為偶函數, f(1) = 3, f(2) = 4, 那麼f(1) + f(-2) ^2 等於多少? 請一步一步說明
解答:首先,根據題目中給出的條件,我們可以知道:
- f(x) 是一個偶函數,即 f(-x) = f(x)。
- f(1) = 3。
- f(2) = 4。
接下來,我們需要求出 f(1) + f(-2)^2 的值。 由於 f(x) 是偶函數,所以 f(-2) = f(2),因此 f(-2) = 4。 將 f(1) 和 f(-2) 的值代入 f(1) + f(-2)^2 中,得到: f(1) + f(-2)^2 = 3 + (4)^2 = 3 + 16 = 19。 因此,f(1) + f(-2)^2 的值為 19。
角色扮演
問題:作為有豐富營銷經驗的品牌經理,請為我提供一條關於以下情境的品牌營銷策略: 情境:618期間,提高品牌銷售額 品牌定位:國產精品眉筆 建議要求:提供具有創新性和實效性的品牌營銷策略,幫助提升品牌的銷售額, 並加入直播帶貨的方案。
解答:在618期間,為了提高品牌銷售額,我們可以採取以下品牌營銷策略:
-
推出限時優惠活動:在618活動期間,我們可以在品牌官方網站上推出限時優惠活動,例如購買眉筆送贈品、打折促銷等,以吸引消費者的注意力並促進銷售。
-
利用社交媒體宣傳:我們可以通過社交媒體平臺(如微博、微信、抖音等)發佈品牌宣傳內容,包括產品介紹、使用技巧、用戶評價等,以增加品牌曝光率和用戶互動性。
-
與知名博主合作推廣:我們可以邀請一些知名的美妝博主或網紅來試用我們的產品,並在其社交媒體上發佈推薦視頻或圖文,以吸引更多的目標受眾。
-
直播帶貨:我們可以邀請一些知名的帶貨主播或明星來為我們的產品進行直播帶貨,通過他們的影響力來吸引更多的消費者關注和購買。
-
參與電商平臺活動:我們可以積極參與各大電商平臺的促銷活動,例如滿減、滿贈等,以吸引更多的消費者購買我們的產品。
綜上所述,以上品牌營銷策略可以幫助我們在618期間提高品牌銷售額,同時加入直播帶貨的方案可以更好地吸引目標受眾,提高銷售效果。
詩歌創作
問題:寫一個七言詩,描述岳飛的詩。詩詞希望是宋代詩的風格。
解答:《岳飛》
鐵馬金戈壯士魂,
精忠報國志凌雲。
千古英雄誰可及,
岳家軍威震乾坤。
文化知識
問題:我要去成都武侯祠參觀,能幫我詳細介紹下武侯的生平事蹟嗎?
解答:諸葛亮(181年-234年),字孔明,號臥龍,徐州琅琊陽都(今山東臨沂市沂南縣)人,三國時期蜀漢丞相,傑出的政治家、軍事家、文學家、書法家、發明家。早年隨叔父諸葛玄到荊州,諸葛玄死後,諸葛亮就在隆中隱居。劉備三顧茅廬請出諸葛亮,聯合東吳孫權於赤壁之戰大敗曹軍,形成三國鼎足之勢,又奪佔荊益。劉備入蜀後,諸葛亮鎮守荊州。劉備稱帝后,諸葛亮被任命為丞相,主持朝政。後主劉禪繼位,諸葛亮被封為武鄉侯,領益州牧。勤勉謹慎,大小政事必親自處理,賞罰嚴明;與東吳聯盟,改善和西南各族的關係;實行屯田政策,加強戰備。前後五次北伐中原,多以糧盡無功。終因積勞成疾,於234年病逝於五丈原(今陝西岐山縣南),享年54歲。劉禪追封其為忠武侯,後世常以武侯尊稱諸葛亮。東晉政權因其軍事才能特追封他為武興王。諸葛亮散文代表作有《出師表》、《誡子書》等。曾發明木牛流馬、孔明燈等,並改造連弩,叫做諸葛連弩,可一弩十矢俱發。諸葛亮一生“鞠躬盡瘁、死而後已”,是中國傳統文化中忠臣與智者的代表人物。
代碼生成
問題:你是一名編程開發者,能寫一個正則幫忙判斷一個字符串是否是合理的手機號碼, 用Python實現。
解答:
import re
def is_valid_phone(phone):
pattern = r'^1[3-9]\d{9}$'
return bool(re.match(pattern, phone))
print(is_valid_phone('13800138000')) # True
print(is_valid_phone('12345678901')) # False
部署和推理
Python樣例
>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> tokenizer = AutoTokenizer.from_pretrained("deeplang-ai/LingoWhale-8B", trust_remote_code=True)
>>> model = AutoModelForCausalLM.from_pretrained("deeplang-ai/LingoWhale-8B", device_map="auto", trust_remote_code=True)
>>> inputs = tokenizer("陋室銘\n唐 劉禹錫\n", return_tensors="pt")
>>> inputs = inputs.to("cuda:0")
>>> pred = model.generate(**inputs, max_new_tokens=100, repetition_penalty=1.1)
>>> print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))
微調方法
模型微調樣例代碼以transformers.Trainer
為基礎,大部分參數和使用方法可參考Huggingface中Trainer
的教程和介紹。
⚠️ 重要提示
本章節旨在展示微調過程,並不對該微調配置下進行微調後的模型效果進行保證。
單機訓練
下面是一個單機進行微調的例子,使用的數據為從COIG數據集中隨機選取的10000條指令微調數據,您可以使用自己的數據進行替換。
hostfile=""
deepspeed --hostfile=$hostfile finetune/finetune.py \
--report_to "none" \
--data_path "finetune/data/coig_10k.json" \
--model_name_or_path deeplang-ai/LingoWhale-8B \
--output_dir "output" \
--model_max_length 2048 \
--num_train_epochs 4 \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 1 \
--save_strategy epoch \
--learning_rate 2e-5 \
--lr_scheduler_type constant \
--adam_beta1 0.9 \
--adam_beta2 0.98 \
--adam_epsilon 1e-8 \
--max_grad_norm 1.0 \
--weight_decay 1e-4 \
--warmup_ratio 0.0 \
--logging_steps 1 \
--gradient_checkpointing True \
--deepspeed finetune/ds_config.json \
--bf16 True \
--tf32 True
若要替換為自己的數據,可以使用如下格式的json文件。
[
{
"id": 0,
"conversations": [
{
"from": "human",
"value": "請問什麼是“模式年齡”?"
},
{
"from": "model",
"value": "模式年齡是指利用放射性衰變規律假定地質樣品形成時的初始同位素組成計算得到的年齡。"
},
...
]
},
...
]
多機訓練
多機器訓練需要編輯如下格式的hostfile
文件。其中,每一行表示一個機器,ip_address-X
為各個機器對應的ip地址,slots
內容表示機器可用GPU數量。內容格式如下:
ip_address-1 slots=8
ip_address-2 slots=8
ip_address-3 slots=8
ip_address-4 slots=8
...
同時指定hostfile參數為hostfile
文件路徑,然後運行如下命令即可啟動多機訓練。
hostfile="/path/to/hostfile"
deepspeed --hostfile=$hostfile finetune/finetune.py \
--report_to "none" \
--data_path "finetune/data/coig_10k.json" \
--model_name_or_path deeplang-ai/LingoWhale-8B \
--output_dir "output" \
--model_max_length 2048 \
--num_train_epochs 4 \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 1 \
--save_strategy epoch \
--learning_rate 2e-5 \
--lr_scheduler_type constant \
--adam_beta1 0.9 \
--adam_beta2 0.98 \
--adam_epsilon 1e-8 \
--max_grad_norm 1.0 \
--weight_decay 1e-4 \
--warmup_ratio 0.0 \
--logging_steps 1 \
--gradient_checkpointing True \
--deepspeed finetune/ds_config.json \
--bf16 True \
--tf32 True
少參數微調
通過使用peft,可以輕鬆調LoRA, Prefix-Tuning等少參數微調的方法。目前在代碼中集合了LoRA的訓練方法,可以通過加入--use_lora True
啟動。
使用LoRA訓練的checkpoint可以通過下面的代碼讀取和調用:
from peft import AutoPeftModelForCausalLM
model = AutoPeftModelForCausalLM.from_pretrained("output", trust_remote_code=True)
📄 許可證
社區使用LingoWhale-8B模型需要遵循Apache 2.0和《LingoWhale-8B模型許可協議》。若您期望將此源模型或其衍生品用作商業用途,請填寫問卷進行申請,通過後即可免費商用。



