🚀 Unsloth:讓Llama 3.1、Gemma 2、Mistral 2微調加速5倍,內存使用降低70%!
Unsloth能夠顯著提升模型微調效率,降低內存使用。用戶可以利用免費的Google Colab筆記本,輕鬆完成模型微調。微調後的模型可導出為GGUF、vLLM格式,或上傳至Hugging Face。
我們提供了Qwen 2.5(所有模型大小)的免費Google Colab Tesla T4筆記本,還有Qwen 2.5對話風格筆記本。

🚀 快速開始
免費微調
所有筆記本都對初學者友好!添加你的數據集,點擊“全部運行”,你將獲得一個速度提升2倍的微調模型,該模型可以導出為GGUF、vLLM格式,或上傳至Hugging Face。
- 此對話筆記本適用於ShareGPT ChatML / Vicuna模板。
- 此文本補全筆記本適用於原始文本。此DPO筆記本可復現Zephyr。
- * Kaggle有2個T4 GPU,但我們只使用1個。由於開銷問題,1個T4 GPU的速度是原來的5倍。
✨ 主要特性
Qwen2.5-7B-Instruct介紹
Qwen2.5是通義大語言模型的最新系列。對於Qwen2.5,我們發佈了一系列基礎語言模型和指令調優語言模型,參數範圍從5億到720億。Qwen2.5在Qwen2的基礎上帶來了以下改進:
- 知識更豐富:由於我們在編碼和數學領域的專業專家模型,Qwen2.5在編碼和數學方面的能力有了極大提升。
- 指令遵循能力提升:在指令遵循、長文本生成(超過8K tokens)、結構化數據理解(如表格)和結構化輸出生成(特別是JSON)方面有顯著改進。對系統提示的多樣性更具魯棒性,增強了聊天機器人的角色扮演實現和條件設置。
- 長上下文支持:支持長達128K tokens的上下文,並能生成長達8K tokens的文本。
- 多語言支持:支持超過29種語言,包括中文、英文、法文、西班牙文、葡萄牙文、德文、意大利文、俄文、日文、韓文、越南文、泰文、阿拉伯文等。
本倉庫包含經過指令調優的7B Qwen2.5模型,具有以下特點:
屬性 |
詳情 |
模型類型 |
因果語言模型 |
訓練階段 |
預訓練和後訓練 |
架構 |
帶有RoPE、SwiGLU、RMSNorm和注意力QKV偏置的transformers |
參數數量 |
76.1億 |
非嵌入參數數量 |
65.3億 |
層數 |
28 |
注意力頭數量(GQA) |
Q為28,KV為4 |
上下文長度 |
完整的131,072 tokens,生成8192 tokens |
有關如何部署Qwen2.5處理長文本的詳細說明,請參考此部分。
更多詳細信息,請參考我們的博客、GitHub和文檔。
要求
Qwen2.5的代碼已集成在最新的Hugging face transformers
中,我們建議你使用最新版本的transformers
。
使用transformers<4.37.0
時,你會遇到以下錯誤:
KeyError: 'qwen2'
快速上手
以下是一個使用apply_chat_template
的代碼片段,展示瞭如何加載分詞器和模型,以及如何生成內容。
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen2.5-7B-Instruct"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
prompt = "Give me a short introduction to large language model."
messages = [
{"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
處理長文本
當前的config.json
設置的上下文長度最大為32,768 tokens。
為了處理超過32,768 tokens的大量輸入,我們使用了YaRN技術,該技術可增強模型的長度外推能力,確保在長文本上的最佳性能。
對於支持的框架,你可以在config.json
中添加以下內容以啟用YaRN:
{
...,
"rope_scaling": {
"factor": 4.0,
"original_max_position_embeddings": 32768,
"type": "yarn"
}
}
對於部署,我們建議使用vLLM。如果你不熟悉vLLM,請參考我們的文檔。目前,vLLM僅支持靜態YARN,這意味著縮放因子無論輸入長度如何都保持不變,可能會影響短文本的性能。我們建議僅在需要處理長上下文時添加rope_scaling
配置。
評估與性能
詳細的評估結果見此博客。
有關GPU內存要求和相應的吞吐量,請參閱此處的結果。
引用
如果你覺得我們的工作有幫助,請引用以下內容:
@misc{qwen2.5,
title = {Qwen2.5: A Party of Foundation Models},
url = {https://qwenlm.github.io/blog/qwen2.5/},
author = {Qwen Team},
month = {September},
year = {2024}
}
@article{qwen2,
title={Qwen2 Technical Report},
author={An Yang and Baosong Yang and Binyuan Hui and Bo Zheng and Bowen Yu and Chang Zhou and Chengpeng Li and Chengyuan Li and Dayiheng Liu and Fei Huang and Guanting Dong and Haoran Wei and Huan Lin and Jialong Tang and Jialin Wang and Jian Yang and Jianhong Tu and Jianwei Zhang and Jianxin Ma and Jin Xu and Jingren Zhou and Jinze Bai and Jinzheng He and Junyang Lin and Kai Dang and Keming Lu and Keqin Chen and Kexin Yang and Mei Li and Mingfeng Xue and Na Ni and Pei Zhang and Peng Wang and Ru Peng and Rui Men and Ruize Gao and Runji Lin and Shijie Wang and Shuai Bai and Sinan Tan and Tianhang Zhu and Tianhao Li and Tianyu Liu and Wenbin Ge and Xiaodong Deng and Xiaohuan Zhou and Xingzhang Ren and Xinyu Zhang and Xipin Wei and Xuancheng Ren and Yang Fan and Yang Yao and Yichang Zhang and Yu Wan and Yunfei Chu and Yuqiong Liu and Zeyu Cui and Zhenru Zhang and Zhihao Fan},
journal={arXiv preprint arXiv:2407.10671},
year={2024}
}
📄 許可證
本項目採用Apache-2.0許可證。