🚀 CodeBERTa
这是一个以 SafeTensors
格式对 huggingface/CodeBERTa-small-v1 进行的非官方重新上传,使用的是 transformers
4.41.1
。此次重新上传的目的是防止那些仍然具有重要参考价值的旧模型因 HuggingFace 的更新而变得过时。此外,我可能会进行一些小的修正,例如模型最大长度配置。
以下是原始模型卡片内容:
🚀 快速开始
掩码语言模型预测
基础用法
PHP_CODE = """
public static <mask> set(string $key, $value) {
if (!in_array($key, self::$allowedKeys)) {
throw new \InvalidArgumentException('Invalid key given');
}
self::$storedValues[$key] = $value;
}
""".lstrip()
高级用法
from transformers import pipeline
fill_mask = pipeline(
"fill-mask",
model="huggingface/CodeBERTa-small-v1",
tokenizer="huggingface/CodeBERTa-small-v1"
)
fill_mask(PHP_CODE)
' function'
'function'
' void'
' def'
' final'
对 Python 代码进行预测
PYTHON_CODE = """
def pipeline(
task: str,
model: Optional = None,
framework: Optional[<mask>] = None,
**kwargs
) -> Pipeline:
pass
""".lstrip()
预测结果:
'framework', 'Framework', ' framework', 'None', 'str'
这个程序可以自动补全自身代码!😱
对自然语言进行掩码预测
fill_mask("My name is <mask>.")
这种方式(在一定程度上)可行,因为代码中包含注释(注释中包含自然语言)。
当然,对于计算机科学家来说,最常见的名字肯定是 “undefined” 🤓。
查看 huggingface/CodeBERTa-language-id
的模型卡片 🤯。
✨ 主要特性
CodeBERTa 是一个类似 RoBERTa 的模型,在来自 GitHub 的 CodeSearchNet 数据集上进行训练。
支持的语言:
"go"
"java"
"javascript"
"php"
"python"
"ruby"
分词器 是一个基于字节级的 BPE 分词器,使用 Hugging Face 的 tokenizers
在语料库上进行训练。
由于它是在代码语料库(而非自然语言)上进行训练的,因此它能够高效地对语料库进行编码(与使用 gpt2/roberta 进行分词的相同语料库相比,序列长度缩短了 33% 到 50%)。
模型(小型)是一个 6 层、8400 万个参数的类似 RoBERTa 的 Transformer 模型,与 DistilBERT 的层数和头数相同,从默认初始化设置开始初始化,并在整个语料库(约 200 万个函数)上从头开始训练了 5 个 epoch。
本次训练的 Tensorboard ⤵️

📚 详细文档
CodeSearchNet 引用
@article{husain_codesearchnet_2019,
title = {{CodeSearchNet} {Challenge}: {Evaluating} the {State} of {Semantic} {Code} {Search}},
shorttitle = {{CodeSearchNet} {Challenge}},
url = {http://arxiv.org/abs/1909.09436},
urldate = {2020-03-12},
journal = {arXiv:1909.09436 [cs, stat]},
author = {Husain, Hamel and Wu, Ho-Hsiang and Gazit, Tiferet and Allamanis, Miltiadis and Brockschmidt, Marc},
month = sep,
year = {2019},
note = {arXiv: 1909.09436},
}
📄 许可证
文档中未提及相关内容,跳过该章节。
🔧 技术细节
文档中未提及相关内容,跳过该章节。
📦 安装指南
文档中未提及相关内容,跳过该章节。