🚀 CodeGen (CodeGen-HTML 350M)
CodeGenは、プログラム合成のための自己回帰型言語モデルのファミリーです。このモデルは、特定の自然言語やプログラミング言語のテキストから特徴を抽出し、その尤度を計算することができます。
🚀 クイックスタート
CodeGenは、論文 A Conversational Paradigm for Program Synthesis から派生した自己回帰型言語モデルのファミリーです。元々は このリポジトリ で公開され、3種類の事前学習データバリアント (NL
, Multi
, Mono
) と4種類のモデルサイズバリアント (350M
, 2B
, 6B
, 16B
) で提供されています。
このリポジトリに含まれるチェックポイントは、CodeGen-Multi 350M の上で微調整されています。「Multi」は、モデルが CodeGen-NL 350M で初期化され、複数のプログラミング言語のデータセットでさらに事前学習されたことを意味し、「350M」は学習可能なパラメータの数を指します。
このモデルは、huggingfaceの bigcode/the-stack データセットに含まれるHTMLコードで微調整されています。
✨ 主な機能
モデルの概要
CodeGenは、プログラム合成のための自己回帰型言語モデルのファミリーです。このモデルは、特定の自然言語やプログラミング言語のテキストから特徴を抽出し、その尤度を計算することができます。
学習データ
このチェックポイント (CodeGen-Multi 350M) は、最初に CodeGen-NL 350M で初期化され、次に BigQuery というGitHubリポジトリからの複数のプログラミング言語の大規模データセットで事前学習されました。このデータは119.2Bトークンで構成され、C、C++、Go、Java、JavaScript、Pythonを含みます。
最後に、huggingfaceの bigcode/the-stack データセットに含まれるHTMLコードで微調整されました。
学習手順
初期学習
CodeGenは、交差エントロピー損失を使用して、逐次入力の尤度を最大化するように学習されました。このモデルファミリーは、Googleの複数のTPU-v4-512を使用して、データ並列とモデル並列を活用して学習されました。詳細は 論文 のセクション2.3を参照してください。
微調整
私は、単一のA100 (40GbのRAM) で350Mモデルを微調整しました。バッチサイズは10、入力長は512トークンで、RAMの80 - 90%を使用しました。
使用目的と制限
自己回帰型言語モデルとして、CodeGenは与えられた自然言語とプログラミング言語のテキストから特徴を抽出し、その尤度を計算することができます。
ただし、このモデルは主に プログラム合成 に使用されることを想定しており、英語のプロンプト (コメント文字列の形式) を与えることで実行可能なコードを生成するのに最適です。また、部分的に生成されたコードを完成させることもできます。
📦 インストール
このモデルは、AutoModelForCausalLM
機能を使用して簡単にロードできます。
💻 使用例
基本的な使用法
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen-350M-multi")
model = AutoModelForCausalLM.from_pretrained("alecsharpie/codegen_350m_html")
text = "<body>"
input_ids = tokenizer(text, return_tensors="pt").input_ids
generated_ids = model.generate(input_ids, max_length=128)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))
📚 ドキュメント
BibTeXエントリと引用情報
@article{Nijkamp2022ACP,
title={A Conversational Paradigm for Program Synthesis},
author={Nijkamp, Erik and Pang, Bo and Hayashi, Hiroaki and Tu, Lifu and Wang, Huan and Zhou, Yingbo and Savarese, Silvio and Xiong, Caiming},
journal={arXiv preprint},
year={2022}
}
📄 ライセンス
このモデルは、BSD 3条項ライセンスの下で提供されています。