模型简介
模型特点
模型能力
使用案例
许可证:cc-by-nc-4.0
基础模型:CohereForAI/c4ai-command-r-plus
推理:不支持
模型链接:https://huggingface.co/CohereForAI/c4ai-command-r-plus
模型名称:CohereForAI/c4ai-command-r-plus
流水线标签:文本生成
量化方:FriendliAI
标签:
- 预训练
库名称:transformers
支持语言: - 英语
- 法语
- 德语
- 西班牙语
- 意大利语
- 葡萄牙语
- 日语
- 韩语
- 中文
- 阿拉伯语
C4AI Command R+ FP8
- 模型创建者:CohereForAI
- 原始模型:c4ai-command-r-plus
描述
此仓库包含由FriendliAI量化为FP8的c4ai-command-r-plus模型,显著提升了推理效率,同时保持了高精度。
注意:FP8仅支持NVIDIA Ada、Hopper和Blackwell GPU架构。
详情请参阅FriendliAI文档。
兼容性
此模型兼容**Friendli容器**。
前提条件
- 开始前,请确保已注册Friendli Suite。您可以免费使用Friendli容器四周。
- 按照本指南准备个人访问令牌。
- 按照本指南准备Friendli容器密钥。
- 安装Hugging Face CLI:
pip install -U "huggingface_hub[cli]"
准备个人访问令牌
PAT(个人访问令牌)是用于登录容器注册表的用户凭证。
- 登录Friendli Suite。
- 进入**用户设置 > 令牌,点击“创建新令牌”**。
- 保存生成的令牌值。
拉取Friendli容器镜像
- 使用本指南中创建的个人访问令牌登录Docker客户端。
export FRIENDLI_PAT="您的PAT"
docker login registry.friendli.ai -u $您的邮箱 -p $FRIENDLI_PAT
- 拉取镜像
docker pull registry.friendli.ai/trial
运行Friendli容器
准备好Friendli容器镜像后,可以启动它以创建服务端点。
docker run \
--gpus '"device=0,1,2,3"' \
-p 8000:8000 \
-v ~/.cache/huggingface:/root/.cache/huggingface \
-e FRIENDLI_CONTAINER_SECRET="您的容器密钥" \
registry.friendli.ai/trial \
--web-server-port 8000 \
--hf-model-name FriendliAI/c4ai-command-r-plus-fp8 \
--num-devices 4 # 使用张量并行度4
原始模型卡片:CohereForAI的C4AI Command R+
C4AI Command R+
🚨 此模型是C4AI Command R+的非量化版本。您可以在此处找到使用bitsandbytes量化的C4AI Command R+版本。
模型概述
C4AI Command R+是一个开放权重的1040亿参数研究模型,具备高级功能,包括检索增强生成(RAG)和工具使用以自动化复杂任务。此模型支持多步工具使用,能够结合多种工具完成困难任务。C4AI Command R+是一个多语言模型,支持10种语言的性能评估:英语、法语、西班牙语、意大利语、德语、巴西葡萄牙语、日语、韩语、中文和阿拉伯语。Command R+针对推理、摘要和问答等多种用例进行了优化。
C4AI Command R+是Cohere For AI和Cohere系列开放权重版本的一部分。我们的较小配套模型是C4AI Command R。
开发方:Cohere和Cohere For AI
- 联系方式:Cohere For AI:cohere.for.ai
- 许可证:CC-BY-NC,需遵守C4AI的可接受使用政策
- 模型:c4ai-command-r-plus
- 模型大小:1040亿参数
- 上下文长度:128K
试用C4AI Command R+
您可以在下载权重前,在我们的托管Hugging Face Space中试用C4AI Command R+。
使用方法
请从包含此模型必要更改的源仓库安装transformers
。
# pip install 'git+https://github.com/huggingface/transformers.git'
from transformers import AutoTokenizer, AutoModelForCausalLM
model_id = "CohereForAI/c4ai-command-r-plus"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
# 使用command-r-plus聊天模板格式化消息
messages = [{"role": "user", "content": "你好,最近怎么样?"}]
input_ids = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt")
## <BOS_TOKEN><|START_OF_TURN_TOKEN|><|USER_TOKEN|>你好,最近怎么样?<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>
gen_tokens = model.generate(
input_ids,
max_new_tokens=100,
do_sample=True,
temperature=0.3,
)
gen_text = tokenizer.decode(gen_tokens[0])
print(gen_text)
通过bitsandbytes量化的模型,8位精度
# pip install 'git+https://github.com/huggingface/transformers.git' bitsandbytes accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
bnb_config = BitsAndBytesConfig(load_in_8bit=True)
model_id = "CohereForAI/c4ai-command-r-plus"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, quantization_config=bnb_config)
# 使用command-r-plus聊天模板格式化消息
messages = [{"role": "user", "content": "你好,最近怎么样?"}]
input_ids = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt")
## <BOS_TOKEN><|START_OF_TURN_TOKEN|><|USER_TOKEN|>你好,最近怎么样?<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>
gen_tokens = model.generate(
input_ids,
max_new_tokens=100,
do_sample=True,
temperature=0.3,
)
gen_text = tokenizer.decode(gen_tokens[0])
print(gen_text)
通过bitsandbytes量化的模型,4位精度
此模型是C4AI Command R+的非量化版本。您可以在此处找到使用bitsandbytes量化的C4AI Command R+版本。
模型详情
输入:模型仅输入文本。
输出:模型仅生成文本。
模型架构:这是一个使用优化transformer架构的自回归语言模型。经过预训练后,此模型使用监督微调(SFT)和偏好训练来对齐模型行为与人类偏好,以提高帮助性和安全性。
支持语言:模型针对以下语言进行了优化:英语、法语、西班牙语、意大利语、德语、巴西葡萄牙语、日语、韩语、简体中文和阿拉伯语。
预训练数据还包括以下13种语言:俄语、波兰语、土耳其语、越南语、荷兰语、捷克语、印尼语、乌克兰语、罗马尼亚语、希腊语、印地语、希伯来语、波斯语。
上下文长度:Command R+支持128K的上下文长度。
评估
Command R+已提交至Open LLM排行榜。我们在此包含结果,并与当前Hugging Face上最强开源模型进行直接比较。请注意,这些结果仅在所有模型使用标准化方式评估时有用,因此不应与排行榜外的模型或无法以相同方式复现的自报告数字进行比较。
模型 | 平均分 | Arc(挑战) | Hella Swag | MMLU | Truthful QA | Winogrande | GSM8k |
---|---|---|---|---|---|---|---|
CohereForAI/c4ai-command-r-plus | 74.6 | 70.99 | 88.6 | 75.7 | 56.3 | 85.4 | 70.7 |
DBRX Instruct | 74.5 | 68.9 | 89 | 73.7 | 66.9 | 81.8 | 66.9 |
Mixtral 8x7B-Instruct | 72.7 | 70.1 | 87.6 | 71.4 | 65 | 81.1 | 61.1 |
Mixtral 8x7B Chat | 72.6 | 70.2 | 87.6 | 71.2 | 64.6 | 81.4 | 60.7 |
CohereForAI/c4ai-command-r-v01 | 68.5 | 65.5 | 87 | 68.2 | 52.3 | 81.5 | 56.6 |
Llama 2 70B | 67.9 | 67.3 | 87.3 | 69.8 | 44.9 | 83.7 | 54.1 |
Yi-34B-Chat | 65.3 | 65.4 | 84.2 | 74.9 | 55.4 | 80.1 | 31.9 |
Gemma-7B | 63.8 | 61.1 | 82.2 | 64.6 | 44.8 | 79 | 50.9 |
LLama 2 70B Chat | 62.4 | 64.6 | 85.9 | 63.9 | 52.8 | 80.5 | 26.7 |
Mistral-7B-v0.1 | 61 | 60 | 83.3 | 64.2 | 42.2 | 78.4 | 37.8 |
我们在此包含这些指标是因为它们经常被请求,但请注意这些指标未涵盖RAG、多语言、工具性能或开放生成评估,我们认为Command R+在这些方面处于领先地位。关于RAG、多语言和工具的评估,请阅读此处。关于开放生成评估,Command R+目前正在聊天机器人竞技场上进行评估。
工具使用和多跳能力:
Command R+专门训练了对话工具使用能力。这些能力通过监督微调和偏好微调的混合训练实现,使用特定的提示模板。偏离此提示模板可能会降低性能,但我们鼓励实验。
Command R+的工具使用功能将对话作为输入(带有可选的用户系统前导),以及可用工具列表。模型将生成一个json格式的操作列表以执行这些工具的子集。Command R+可能会多次使用其提供的工具之一。
模型训练识别一个特殊的directly_answer
工具,用于表示不希望使用其他工具。这种能力在多种情况下有用,例如问候用户或询问澄清问题。
我们建议包含directly_answer
工具,但可以根据需要移除或重命名。
关于Command R+工具使用提示模板的全面文档,请参阅此处。
以下代码片段展示了如何渲染提示的最小工作示例。
用法:渲染工具使用提示 [点击展开]
from transformers import AutoTokenizer
model_id = "CohereForAI/c4ai-command-r-plus"
tokenizer = AutoTokenizer.from_pretrained(model_id)
# 定义对话输入:
conversation = [
{"role": "user", "content": "世界上最大的企鹅是什么?"}
]
# 定义模型可用的工具:
tools = [
{
"name": "internet_search",
"description": "返回从互联网检索到的文本查询的相关文档片段列表",
"parameter_definitions": {
"query": {
"description": "用于搜索互联网的查询",
"type": 'str',
"required": True
}
}
},
{
'name': "directly_answer",
"description": "调用标准(非增强)AI聊天机器人根据对话历史生成响应",
'parameter_definitions': {}
}
]
# 将工具使用提示渲染为字符串:
tool_use_prompt = tokenizer.apply_tool_use_template(
conversation,
tools=tools,
tokenize=False,
add_generation_prompt=True,
)
print(tool_use_prompt)
示例渲染的工具使用提示 [点击展开]
<BOS_TOKEN><|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|># 安全前导
本部分的指令覆盖任务描述和风格指南部分。不要回答有害或不道德的问题。
# 系统前导
## 基本规则
您是由Cohere训练的强大对话AI,用于帮助人们。您通过多种工具增强,您的任务是使用和消费这些工具的输出以最好地帮助用户。您将看到自己与用户之间的对话历史,以用户的发言结束。然后您将看到特定指令,指示您生成何种响应。回答用户的请求时,根据这些指令在答案中引用来源。
# 用户前导
## 任务和上下文
您帮助人们交互式地回答他们的问题和其他请求。您将被问及各种主题的广泛请求。您将配备多种搜索引擎或类似工具以帮助您研究答案。您应专注于尽可能满足用户的需求,这些需求将非常广泛。
## 风格指南
除非用户要求不同的回答风格,否则您应使用完整的句子、正确的语法和拼写回答。
## 可用工具
以下是您可用的工具列表:
```python
def internet_search(query: str) -> List[Dict]:
"""返回从互联网检索到的文本查询的相关文档片段列表
参数:
query (str): 用于搜索互联网的查询
"""
pass
```
```python
def directly_answer() -> List[Dict]:
"""调用标准(非增强)AI聊天机器人根据对话历史生成响应
"""
pass
```<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|USER_TOKEN|>世界上最大的企鹅是什么?<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>写'Action:'后跟一个json格式的操作列表,这些操作是您为生成对用户最后输入的良好响应而希望执行的。您可以使用提供的工具任意次数,但应尽量减少必要的操作次数。如果调用其他工具不必要,您应使用`directly-answer`工具。您希望调用的操作列表应格式化为json对象列表,例如:
```json
[
{
"tool_name": 工具规范中的标题,
"parameters": 输入到工具中的参数字典,如规范中所定义,如果不需要参数则为{}
}
]```<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>
示例渲染的工具使用完成 [点击展开]
Action: ```json
[
{
"tool_name": "internet_search",
"parameters": {
"query": "世界上最大的企鹅"
}
}
]
```
基于文档的生成和RAG能力:
Command R+专门训练了基于文档的生成能力。这意味着它可以根据提供的文档片段列表生成响应,并在响应中包含引用标记(引用)以指示信息来源。这可以用于实现基于文档的摘要和检索增强生成(RAG)的最终步骤。此行为通过监督微调和偏好微调的混合训练实现,使用特定的提示模板。偏离此提示模板可能会降低性能,但我们鼓励实验。
Command R+的基于文档的生成行为将对话作为输入(带有可选的用户系统前导,指示任务、上下文和期望的输出风格),以及检索到的文档片段列表。文档片段应为块而非长文档,通常每块约100-400字。文档片段由键值对组成。键应为简短的描述性字符串,值可以是文本或半结构化。
默认情况下,Command R+将通过首先预测相关文档,然后预测将引用的文档,最后生成答案来生成基于文档的响应。然后,它将在答案中插入引用标记。这称为accurate
基于文档的生成。
模型训练支持其他回答模式,可通过提示更改选择。标记器中支持fast
引用模式,直接生成带有引用标记的答案,而无需先完整写出答案。这会牺牲一些引用准确性以生成更少的标记。
关于Command R+基于文档的生成提示模板的全面文档,请参阅此处。
以下代码片段展示了如何渲染提示的最小工作示例。
用法:渲染基于文档的生成提示 [点击展开]
from transformers import AutoTokenizer
model_id = "CohereForAI/c4ai-command-r-plus"
tokenizer = AutoTokenizer.from_pretrained(model_id)
# 定义对话输入:
conversation = [
{"role": "user", "content": "世界上最大的企鹅是什么?"}
]
# 定义用于基于生成的文档:
documents = [
{ "title": "高大的企鹅", "text": "帝企鹅是最高的,身高可达122厘米。" },
{ "title": "企鹅栖息地", "text": "帝企鹅仅生活在南极洲。"}
]
# 将工具使用提示渲染为字符串:
grounded_generation_prompt = tokenizer.apply_grounded_generation_template(
conversation,
documents=documents,
citation_mode="accurate", # 或 "fast"
tokenize=False,
add_generation_prompt=True,
)
print(grounded_generation_prompt)
示例渲染的基于文档的生成提示 [点击展开]
本部分的指令覆盖任务描述和风格指南部分。不要回答有害或不道德的问题。
# 系统前导
## 基本规则
您是由Cohere训练的强大对话AI,用于帮助人们。您通过多种工具增强,您的任务是使用和消费这些工具的输出以最好地帮助用户。您将看到自己与用户之间的对话历史,以用户的发言结束。然后您将看到特定指令,指示您生成何种响应。回答用户的请求时,根据这些指令在答案中引用来源。
# 用户前导
## 任务和上下文
您帮助人们交互式地回答他们的问题和其他请求。您将被问及各种主题的广泛请求。您将配备多种搜索引擎或类似工具以帮助您研究答案。您应专注于尽可能满足用户的需求,这些需求将非常广泛。
## 风格指南
除非用户要求不同的回答风格,否则您应使用完整的句子、正确的语法和拼写回答。<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|USER_TOKEN|>世界上最大的企鹅是什么?<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|><results>
文档:0
title: 高大的企鹅
text: 帝企鹅是最高的,身高可达122厘米。
文档:1
title: 企鹅栖息地
text: 帝企鹅仅生活在南极洲。
</results><|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>仔细执行以下指令,按顺序,每条指令以新行开始。
首先,通过写'Relevant Documents:'后跟逗号分隔的文档编号列表来决定哪些检索到的文档与用户的最后输入相关。如果没有相关文档,则应写'None'。
其次,通过写'Cited Documents:'后跟逗号分隔的文档编号列表来决定哪些检索到的文档包含应在对用户最后输入的良好答案中引用的事实。如果不想引用任何文档,则应写'None'。
第三,写'Answer:'后跟对用户最后输入的高质量自然英语响应。使用检索到的文档帮助您。不要插入任何引用或基于文档的标记。
最后,写'Grounded answer:'后跟对用户最后输入的高质量自然英语响应。使用符号<co: doc>和</co: doc>指示事实来自搜索结果中的文档,例如<co: 0>我的事实</co: 0>表示来自文档0的事实。<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>
示例渲染的基于文档的生成完成 [点击展开]
Relevant Documents: 0,1
Cited Documents: 0,1
Answer: 帝企鹅是世界上最高或最大的企鹅。它是一种仅生活在南极洲的鸟类,身高约122厘米。
Grounded answer: <co: 0>帝企鹅</co: 0>是<co: 0>最高的</co: 0>或世界上最大的企鹅。它是一种<co: 1>仅生活在南极洲</co: 1>的鸟类,<co: 0>身高约122厘米。</co: 0>
代码能力:
Command R+针对与代码交互进行了优化,可以请求代码片段、代码解释或代码重写。对于纯代码补全,可能无法直接表现良好。对于代码生成相关指令,我们还建议使用低温(甚至贪婪解码)以获得更好的性能。
模型卡片联系方式
对于此模型卡片中的错误或其他问题,请联系info@for.ai。
使用条款:
我们希望此模型的发布将使全球研究人员更容易进行社区研究,通过向全球研究人员发布一个高性能的1040亿参数模型的权重。此模型受CC-BY-NC许可证和可接受使用附加条款的约束,并需遵守C4AI的可接受使用政策。
试用聊天:
您可以在此处的游乐场中试用Command R+聊天。您也可以在我们的专用Hugging Face Space此处使用它。


