🚀 混合品質データによるオープンソース言語モデルの進化
このプロジェクトは、混合品質データを用いてオープンソース言語モデルを向上させます。Llama 3ベースのOPENCHAT 3.6は、オープンソースの8Bモデルの中で最高の性能を発揮します。
Advancing Open-source Language Models with Mixed-Quality Data
オンラインデモ
|
GitHub
|
論文
|
Discord
Sponsored by RunPod
* Llama-3-Instructは、フューショットテンプレートに従えないことが多いです。例を参照してください。
🚀 クイックスタート
このモデルを使用するには、まずインストールガイドに従ってOpenChatパッケージをインストールすることを強くおすすめします。その後、以下の表のサービングコマンドを実行して、OpenChatのOpenAI互換APIサーバーを使用します。このサーバーは、vLLMを使用して高スループットなデプロイメントに最適化されており、24GBのRAMを持つ消費者向けGPUで実行できます。テンソル並列を有効にするには、サービングコマンドに--tensor-parallel-size N
を追加します。
サーバーが起動すると、localhost:18888
でリクエストを待ち受け、OpenAI ChatCompletion API仕様と互換性があります。以下の例のリクエストを参考にしてください。また、OpenChat Web UIを使用すると、ユーザーフレンドリーな体験が得られます。
サーバーをオンラインサービスとしてデプロイする場合は、--api-keys sk-KEY1 sk-KEY2 ...
を使用して許可されたAPIキーを指定し、--disable-log-requests --disable-log-stats --log-file openchat.log
を使用してログをファイルにのみ記録することができます。セキュリティ上の理由から、サーバーの前にHTTPSゲートウェイを使用することをおすすめします。
モデル |
サイズ |
コンテキスト |
ウェイト |
サービング |
OpenChat-3.6-20240522 |
8B |
8192 |
Huggingface |
python -m ochat.serving.openai_api_server --model openchat/openchat-3.6-8b-20240522 |
リクエストの例 (クリックして展開)
curl http://localhost:18888/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "openchat_3.6",
"messages": [{"role": "user", "content": "You are a large language model named OpenChat. Write a poem to describe yourself"}]
}'
💻 使用例
基本的な使用法
このモデルのデフォルトモードは、コーディング、チャット、一般的なタスクに最適です。これはLlama 3 Instructテンプレートの修正版で、唯一の違いはロール名で、GPT4 Correct User
またはGPT4 Correct Assistant
のいずれかになります。
<|start_header_id|>GPT4 Correct User<|end_header_id|>\n\nHello<|eot_id|><|start_header_id|>GPT4 Correct Assistant<|end_header_id|>\n\nHi<|eot_id|><|start_header_id|>GPT4 Correct User<|end_header_id|>\n\nHow are you today?<|eot_id|><|start_header_id|>GPT4 Correct Assistant<|end_header_id|>\n\n
⚠️ 注意: <|eot_id|>
を生成終了トークンとして設定することを忘れないでください。
デフォルトのテンプレートは、統合されたtokenizer.chat_template
としても利用できます。これを使用すると、手動でテンプレートを指定する代わりに使用できます。
messages = [
{"role": "user", "content": "Hello"},
{"role": "assistant", "content": "Hi"},
{"role": "user", "content": "How are you today?"}
]
tokens = tokenizer.apply_chat_template(messages, add_generation_prompt=True)
高度な使用法
Transformersを使用して推論を行う場合の例です。
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "openchat/openchat-3.6-8b-20240522"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16, device_map="auto")
messages = [
{"role": "user", "content": "Explain how large language models work in detail."},
]
input_ids = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)
outputs = model.generate(input_ids,
do_sample=True,
temperature=0.5,
max_new_tokens=1024
)
response = outputs[0][input_ids.shape[-1]:]
print(tokenizer.decode(response, skip_special_tokens=True))
📚 ドキュメント
制限事項
基礎モデルの制限
OpenChatは高度な機能を備えていますが、依然として基礎モデルに内在する制限に縛られています。これらの制限は、複雑な推論、数学や算術のタスク、プログラミングやコーディングの課題などの分野でモデルの性能に影響を与える可能性があります。
存在しない情報の生成
OpenChatは時々、存在しないまたは正確でない情報を生成することがあります。これは「幻覚」とも呼ばれます。ユーザーはこの可能性を認識し、モデルから得られた重要な情報を検証する必要があります。
安全性
OpenChatは時々、有害な、ヘイトスピーチ、偏った応答を生成するか、安全でない質問に答えることがあります。安全で適切な応答が必要なユースケースでは、追加のAIセキュリティ対策を適用することが重要です。
💌 連絡先
私たちはあなたからのご意見やこのエキサイティングなプロジェクトでの協力を楽しみにしています!
プロジェクトリード:
- Guan Wang [imonenext at gmail dot com]
- Alpay Ariyak [aariyak at wpi dot edu]
引用
@article{wang2023openchat,
title={OpenChat: Advancing Open-source Language Models with Mixed-Quality Data},
author={Wang, Guan and Cheng, Sijie and Zhan, Xianyuan and Li, Xiangang and Song, Sen and Liu, Yang},
journal={arXiv preprint arXiv:2309.11235},
year={2023}
}
📄 ライセンス
このプロジェクトはLlama 3ライセンスの下で提供されています。
属性 |
詳情 |
モデルタイプ |
OpenChat 3.6 |
ベースモデル |
meta-llama/Meta-Llama-3-8B |
ライセンス |
Llama 3 |
ライブラリ名 |
transformers |
パイプラインタグ |
テキスト生成 |
タグ |
openchat、llama3、C-RLFT |