🚀 Codestral-22B-v0.1模型卡片
Codestrall-22B-v0.1在包含80多种编程语言的多样化数据集上进行训练,涵盖了Python、Java、C、C++、JavaScript和Bash等最流行的语言(更多详细信息请参阅博客文章)。该模型可以通过以下方式进行查询:
- 指令式查询,例如回答关于代码片段的任何问题(编写文档、解释代码、代码重构)或根据特定指示生成代码。
- 中间填充(FIM),用于预测前缀和后缀之间的中间标记(这对于VS Code等软件开发插件非常有用)。
🚀 快速开始
2024年5月31日更新:修复了原模型更新后的分词器问题:https://huggingface.co/mistralai/Codestral-22B-v0.1/discussions/10
使用此脚本进行转换。
✨ 主要特性
- 支持80多种编程语言,能处理多种编程相关任务。
- 提供指令式查询和中间填充(FIM)两种查询方式。
📦 安装指南
建议将mistralai/Codestral-22B-v0.1
与mistral-inference一起使用。
pip install mistral_inference
下载模型
from huggingface_hub import snapshot_download
from pathlib import Path
mistral_models_path = Path.home().joinpath('mistral_models', 'Codestral-22B-v0.1')
mistral_models_path.mkdir(parents=True, exist_ok=True)
snapshot_download(repo_id="mistralai/Codestral-22B-v0.1", allow_patterns=["params.json", "consolidated.safetensors", "tokenizer.model.v3"], local_dir=mistral_models_path)
💻 使用示例
基础用法
聊天功能
安装mistral_inference
后,环境中会有mistral-chat
命令行工具。
mistral-chat $HOME/mistral_models/Codestral-22B-v0.1 --instruct --max_tokens 256
该命令会对“用Rust编写一个计算斐波那契数列的函数”这一问题生成答案,可能如下:
Sure, here's a simple implementation of a function that computes the Fibonacci sequence in Rust. This function takes an integer `n` as an argument and returns the `n`th Fibonacci number.
fn fibonacci(n: u32) -> u32 {
match n {
0 => 0,
1 => 1,
_ => fibonacci(n - 1) + fibonacci(n - 2),
}
}
fn main() {
let n = 10;
println!("The {}th Fibonacci number is: {}", n, fibonacci(n));
}
This function uses recursion to calculate the Fibonacci number. However, it's not the most efficient solution because it performs a lot of redundant calculations. A more efficient solution would use a loop to iteratively calculate the Fibonacci numbers.
中间填充(FIM)功能
安装mistral_inference
并运行pip install --upgrade mistral_common
以确保安装了mistral_common>=1.2
:
from mistral_inference.model import Transformer
from mistral_inference.generate import generate
from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
from mistral_common.tokens.instruct.request import FIMRequest
tokenizer = MistralTokenizer.v3()
model = Transformer.from_folder("~/codestral-22B-240529")
prefix = """def add("""
suffix = """ return sum"""
request = FIMRequest(prompt=prefix, suffix=suffix)
tokens = tokenizer.encode_fim(request).tokens
out_tokens, _ = generate([tokens], model, max_tokens=256, temperature=0.0, eos_id=tokenizer.instruct_tokenizer.tokenizer.eos_id)
result = tokenizer.decode(out_tokens[0])
middle = result.split(suffix)[0].strip()
print(middle)
该代码可能会输出如下内容:
num1, num2):
# Add two numbers
sum = num1 + num2
# return the sum
📚 详细文档
局限性
Codestral-22B-v0.1没有任何审核机制。我们期待与社区共同探讨如何让模型更好地遵守规则,以便在需要审核输出的环境中进行部署。
📄 许可证
Codestral-22B-v0.1采用MNLP-0.1
许可证发布。
🔧 技术细节
该模型由Mistral AI团队开发,团队成员包括Albert Jiang、Alexandre Sablayrolles、Alexis Tacnet等众多人员。模型在80多种编程语言的多样化数据集上进行训练,可通过指令式和中间填充(FIM)两种方式进行查询。
信息表格
属性 |
详情 |
模型类型 |
Codestral-22B-v0.1 |
训练数据 |
80多种编程语言的多样化数据集 |
许可证 |
MNLP-0.1 |