🚀 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},
}
📄 許可證
文檔中未提及相關內容,跳過該章節。
🔧 技術細節
文檔中未提及相關內容,跳過該章節。
📦 安裝指南
文檔中未提及相關內容,跳過該章節。