license: llama3
base_model: meta-llama/Meta-Llama-3-8B
tags:
- openchat
- llama3
- C-RLFT
library_name: transformers
pipeline_tag: text-generation
用混合质量数据推进开源语言模型
在线演示
|
GitHub
|
论文
|
Discord
由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": "你是一个名为OpenChat的大型语言模型。写一首诗来描述你自己"}]
}'
对话模板
💡 默认模式:最适合编码、聊天和一般任务。
这是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": "详细解释大型语言模型的工作原理。"},
]
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安全措施至关重要。
💌 联系我们
我们期待您的反馈,并期待在这个激动人心的项目上与您合作!
项目负责人:
- 王冠 [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}
}