许可证:apache-2.0
数据集:
- bigcode/the-stack
- bigcode/the-stack-v2
- bigcode/starcoderdata
- bigcode/commitpack
库名称:transformers
标签:
- 代码
基础模型:
- JetBrains/Mellum-4b-base
模型索引:
- 名称:Mellum-4b-sft-python
结果:
- 任务:
类型:文本生成
数据集:
类型:tianyang/repobench_python_v1.1
名称:RepoBench 1.1 (Python)
指标:
- 名称:EM
类型:精确匹配
值:0.2837
已验证:false
- 名称:EM ≤ 8k
类型:精确匹配
值:0.2987
已验证:false
- 任务:
类型:文本生成
数据集:
类型:tianyang/repobench_python_v1.1
名称:RepoBench 1.1 (Python, 2k)
指标:
- 名称:EM
类型:精确匹配
值:0.2924
已验证:false
- 任务:
类型:文本生成
数据集:
类型:tianyang/repobench_python_v1.1
名称:RepoBench 1.1 (Python, 4k)
指标:
- 名称:EM
类型:精确匹配
值:0.3060
已验证:false
- 任务:
类型:文本生成
数据集:
类型:tianyang/repobench_python_v1.1
名称:RepoBench 1.1 (Python, 8k)
指标:
- 名称:EM
类型:精确匹配
值:0.2977
已验证:false
- 任务:
类型:文本生成
数据集:
类型:tianyang/repobench_python_v1.1
名称:RepoBench 1.1 (Python, 12k)
指标:
- 名称:EM
类型:精确匹配
值:0.2680
已验证:false
- 任务:
类型:文本生成
数据集:
类型:tianyang/repobench_python_v1.1
名称:RepoBench 1.1 (Python, 16k)
指标:
- 名称:EM
类型:精确匹配
值:0.2543
已验证:false
- 任务:
类型:文本生成
数据集:
类型:gonglinyuan/safim
名称:SAFIM
指标:
- 名称:pass@1
类型:pass@1
值:0.4212
已验证:false
- 任务:
类型:文本生成
数据集:
类型:gonglinyuan/safim
名称:SAFIM (算法类)
指标:
- 名称:pass@1
类型:pass@1
值:0.3316
已验证:false
- 任务:
类型:文本生成
数据集:
类型:gonglinyuan/safim
名称:SAFIM (控制类)
指标:
- 名称:pass@1
类型:pass@1
值:0.3611
已验证:false
- 任务:
类型:文本生成
数据集:
类型:gonglinyuan/safim
名称:SAFIM (API类)
指标:
- 名称:pass@1
类型:pass@1
值:0.5710
已验证:false
- 任务:
类型:文本生成
数据集:
类型:loubnabnl/humaneval_infilling
名称:HumanEval 填空 (单行)
指标:
- 名称:pass@1
类型:pass@1
值:0.8045
已验证:false
- 任务:
类型:文本生成
数据集:
类型:loubnabnl/humaneval_infilling
名称:HumanEval 填空 (多行)
指标:
- 名称:pass@1
类型:pass@1
值:0.4819
已验证:false
- 任务:
类型:文本生成
数据集:
类型:loubnabnl/humaneval_infilling
名称:HumanEval 填空 (随机片段)
指标:
- 名称:pass@1
类型:pass@1
值:0.3768
已验证:false
模型描述
Mellum-4b-sft-python 是 JetBrains 首个开源大语言模型 (LLM) 的微调版本,专为代码相关任务优化。
该模型基于超过 4 万亿 token 进行预训练,支持 8192 token 的上下文窗口,涵盖多种编程语言,并针对 Python 代码补全进行了专门微调。采用 LLaMA 风格的 40 亿参数架构,既适用于云端推理(如通过 vLLM),也适合本地部署(如使用 llama.cpp 或 Ollama)。
训练采用自动混合精度 (AMP) 和 bf16 精度,Hugging Face 上发布的版本保留 bf16 格式供公开使用。
适用于专业开发工具集成(如 IDE 智能代码建议)、AI 编程助手,以及代码理解与生成研究,同时也适合教育应用和微调实验。
局限性
- 偏见:可能反映公共代码库中的偏见,例如生成的代码风格可能接近开源仓库。
- 安全性:代码建议不应默认视为安全或无漏洞。
使用示例
以下是运行和采样模型的示例。
通用生成
import json
from transformers import AutoTokenizer, AutoModelForCausalLM
example = """
import sys
import os
import time
sys.path.append(os.getcwd())
from cluster.prepare_data import get_headers_pairs_list, write_dist_matrix
from cluster.token_edit_distance import get_distance_matrix
if len(sys.argv) < 3:
print(
"Too few arguments. You should provide: \n1. dataset_filename" +
"\n2. output_data_filename"
)
sys.exit()
start = time.perf_counter()
dataset_filename_ = sys.argv[1]
output_data_filename_ = sys.argv[2]
headers_pairs = get_headers_pairs_list(dataset_filename_, verbose=True)
dist_matrix, max_dist = get_distance_matrix(
list(map(lambda x: x[1], headers_pairs)),
verbose=True
)
write_dist_matrix(dist_matrix, max_dist, output_data_filename_, verbose=True)
end = time.perf_counter()
"""
tokenizer = AutoTokenizer.from_pretrained('JetBrains/Mellum-4b-sft-python')
model = AutoModelForCausalLM.from_pretrained('JetBrains/Mellum-4b-sft-python')
encoded_input = tokenizer(example, return_tensors='pt', return_token_type_ids=False)
input_len = len(encoded_input["input_ids"][0])
out = model.generate(
**encoded_input,
max_new_tokens=100,
)
print("### 上下文")
print(tokenizer.decode(out[0][:input_len]))
print("### 预测")
print(tokenizer.decode(out[0][input_len:]))
基于多文件上下文的中间填充生成
example = """<filename>utils.py
def multiply(x, y):
return x * y
<filename>config.py
DEBUG = True
MAX_VALUE = 100
<filename>example.py
<fim_suffix>
# 测试函数
result = calculate_sum(5, 10)
print(result)<fim_prefix>def calculate_sum(a, b):
<fim_middle>"""
encoded_input = tokenizer(example, return_tensors='pt', return_token_type_ids=False)
out = model.generate(
**encoded_input,
max_new_tokens=100,
)
引用
若使用此模型,请引用:
@misc{Mellum-4b-base,
title = {Mellum-4b-base},
author = {Pavlichenko, Nikita and Nazarov, Iurii and Dolgov, Ivan and Garanina, Ekaterina and Lasocki, Karol and Reshetnikova, Julia and Boitsov, Sergei and Bondyrev, Ivan and Karaeva, Dariia and Sheptyakov, Maksim and Ustalov, Dmitry and Mukhin, Artem and Proshev, Semyon and Abramov, Nikita and Kolomyttseva, Olga and Lysaniuk, Kseniia and Zavidnyi, Ilia and Semenkin, Anton and Tankov, Vladislav and Sazanovich, Uladzislau},
year = {2025},
}
联系方式
如有问题、合作或请求,请联系 mellum@jetbrains.com