🚀 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 安全措施。