模型:
facebook/incoder-6B
一个在代码上使用因果掩码目标进行训练的6B参数的解码器-Transformer模型,它允许插入/填充代码以及标准的从左到右生成。
该模型是在公共开源存储库上进行训练的,这些存储库具有宽松的非版权限制许可证(Apache 2.0、MIT、BSD-2或BSD-3),来源于GitHub、GitLab和StackOverflow。这些存储库主要包含Python和JavaScript代码,但也包括28种语言的代码,以及StackOverflow的代码。
有关更多信息,请参阅我们的:
还可以使用较小的1B参数模型,URL地址为 facebook/incoder-1B 。
pytorch、tokenizers和transformers。由于预标记器发生了变化,我们的模型需要HF的tokenizers >= 0.12.1。
pip install torch pip install "tokenizers>=0.12.1" pip install transformers
参见 https://github.com/dpfried/incoder 中的示例代码。
这个6B模型有两个版本:完全精度(float32)的权重版本(存储在main分支中)和半精度(float16)的权重版本(存储在float16分支中)。可以按如下方式加载版本:
完全精度(float32):如果您打算对模型进行微调,应使用此版本(注意:这将占用大量GPU内存,可能需要多个GPU,我们尚未尝试在transformers中训练模型,它是在Fairseq中训练的)。加载方式如下:
model = AutoModelForCausalLM.from_pretrained("facebook/incoder-6B")
半精度(float16):如果您只进行推理(即从模型中生成),则可以使用此版本。它将使用更少的GPU内存,并在加载模型时使用更少的RAM。使用此版本时,应该能够在16 GB GPU上进行推理(批处理大小为1,序列长度至少为256)。加载方式如下:
model = AutoModelForCausalLM.from_pretrained("facebook/incoder-6B", revision="float16", torch_dtype=torch.float16, low_cpu_mem_usage=True)
tokenizer = AutoTokenizer.from_pretrained("facebook/incoder-6B")
注意:incoder-1B和incoder-6B的分词器是相同的,因此也可以使用'facebook/incoder-1B'。
在调用tokenizer.decode时,重要的是将clean_up_tokenization_spaces=False传递给避免删除标点符号之后的空格:
tokenizer.decode(tokenizer.encode("from ."), clean_up_tokenization_spaces=False)
(注意:编码在“<|endoftext|>”令牌之前,因为它标记了我们的模型的文档的开始。可以通过将skip_special_tokens=True传递给tokenizer.decode从解码输出中删除此令牌。)
CC-BY-NC 4.0
该模型由Daniel Fried、Armen Aghajanyan、Jessy Lin、Sida Wang、Eric Wallace、Freda Shi、Ruiqi Zhong、Wen-tau Yih、Luke Zettlemoyer和Mike Lewis开发。
感谢HuggingFace的Lucile Saulnier、Leandro von Werra、Nicolas Patry、Suraj Patil、Omar Sanseviero和其他人对模型发布的帮助,以及对我们的演示代码提供基础的Naman Goyal和Stephen Roller的帮助!