🚀 Advancing Open-source Language Models with Mixed-Quality Data
本項目利用混合質量數據推動開源語言模型的發展,提供了高性能的 Llama 3 版本 OPENCHAT 模型,在開源 8B 模型中表現出色,還提供了便捷的使用方式和豐富的文檔支持。
🚀 快速開始
要使用此模型,強烈建議按照我們倉庫中的安裝指南安裝 OpenChat 包,並通過運行下表中的服務命令來使用與 OpenAI 兼容的 OpenChat API 服務器。該服務器使用 vLLM 進行了高吞吐量部署優化,可在具有 24GB 內存的消費級 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"}]
}'
✨ 主要特性
- 高性能:🏆 是整體表現最佳的開源 8B 模型,🚀 性能優於 Llama-3-8B-Instruct 和其他開源微調/合併模型。
- 模板靈活:提供默認模式,適用於編碼、聊天和一般任務,是 Llama 3 Instruct 模板的改進版本。
💻 使用示例
基礎用法
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))
高級用法
對話模板使用
💡 默認模式:最適合編碼、聊天和一般任務。
它是 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)
📚 詳細文檔
模型信息
屬性 |
詳情 |
模型類型 |
Llama 3 Version: OPENCHAT 3.6 |
基礎模型 |
meta-llama/Meta-Llama-3-8B |
許可證 |
llama3 |
標籤 |
openchat、llama3、C-RLFT |
庫名稱 |
transformers |
任務類型 |
文本生成 |
侷限性說明
基礎模型侷限性
儘管 OpenChat 具有先進的能力,但仍然受其基礎模型固有侷限性的約束。這些侷限性可能會影響模型在以下領域的性能:
生成不存在信息
OpenChat 有時可能會生成不存在或不準確的信息,即所謂的“幻覺”。用戶應意識到這種可能性,並對從模型獲取的任何關鍵信息進行驗證。
安全性問題
OpenChat 有時可能會生成有害、仇恨言論、有偏見的回覆,或回答不安全的問題。在需要安全和經過審核回覆的用例中,應用額外的 AI 安全措施至關重要。
聯繫信息
我們期待與你交流並在這個令人興奮的項目上進行合作!
項目負責人:
- 王觀 [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}
}
提示信息
⚠️ 重要提示
使用對話模板時,記得將 <|eot_id|>
設置為生成結束標記。
💡 使用建議
若要啟用張量並行,請在服務命令後追加 --tensor-parallel-size N
;在需要安全和經過審核回覆的用例中,應用額外的 AI 安全措施。