模型详细情况和参数
💫 StarCoder是一种基于源代码和自然语言文本训练的语言模型(LM)。它的训练数据包含了80多种不同的编程语言,以及从GitHub问题和提交以及notebook中提取的文本数据。
StarCoder是基于GitHub数据训练的一个代码补全大模型。可以实现一个方法或者补全一行代码。模型训练的数据来自Stack v1.2,这是一个收集自GitHub的包含很多代码的数据集。StarCoder的context长度是8192个tokens。
需要注意的是,这个模型不是一个指令模型(instruction model),因此,如果你输入“写一个求平方根的方法”这样的文本是无法获得正确结果的。它所做的主要是代码补全。不过,你也可以使用Tech Assistant prompt来让它有类似的能力。这是一个可以让StarCoder变成类似助理的数据集。
StarCoder生成代码实例
# pip install -q transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "bigcode/starcoder"
device = "cuda" # for GPU usage or "cpu" for CPU usage
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForCausalLM.from_pretrained(checkpoint, trust_remote_code=True).to(device)
inputs = tokenizer.encode("def print_hello_world():", return_tensors="pt").to(device)
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))
StarCoder在代码种插入其它代码实例
input_text = "<fim-prefix>def print_hello_world():\n <fim-suffix>\n print('Hello world!')<fim-middle>"
inputs = tokenizer.encode(input_text, return_tensors="pt").to(device)
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))