🚀 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トークン以上)、構造化データ理解(表など)、構造化出力生成(特にJSON)において顕著な改善が見られます。システムプロンプトの多様性に対するロバスト性が向上し、チャットボットのロールプレイングの実装と条件設定が強化されています。
- 長文脈のサポート:最大128Kトークンの文脈をサポートし、最大8Kトークンのテキストを生成できます。
- 多言語サポート:中国語、英語、フランス語、スペイン語、ポルトガル語、ドイツ語、イタリア語、ロシア語、日本語、韓国語、ベトナム語、タイ語、アラビア語など、29種以上の言語をサポートしています。
このリポジトリには、命令調整された7B Qwen2.5モデルが含まれており、以下の特徴があります。
属性 |
詳細 |
モデルタイプ |
因果言語モデル |
学習段階 |
事前学習と事後学習 |
アーキテクチャ |
RoPE、SwiGLU、RMSNorm、および注意力QKVバイアスを持つトランスフォーマー |
パラメータ数 |
76.1億 |
非埋め込みパラメータ数 |
65.3億 |
レイヤー数 |
28 |
注意力ヘッド数(GQA) |
Qは28、KVは4 |
文脈長 |
最大131,072トークン、生成は最大8192トークン |
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トークンです。
32,768トークンを超える大量の入力を処理するために、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ライセンスの下で提供されています。