🚀 VeriGen
VeriGenは、Verilogコード生成に特化したモデルです。Verilogデータセットでファインチューニングされ、Verilogコードの生成に役立ちます。
🚀 クイックスタート
このセクションでは、VeriGenモデルの概要、使用方法、制限事項、トレーニングの詳細、ライセンス、引用方法について説明します。
✨ 主な機能
- Verilogコードの生成が可能です。
- 特定のVerilogデータセットでファインチューニングされています。
📦 インストール
インストールに関する具体的なコマンドが原ドキュメントに記載されていないため、このセクションは省略されます。
💻 使用例
基本的な使用法
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
prompt = "//module half adder "
device='cuda'
model_name = "shailja/CodeGen_2B_Verilog"
tokenizer = AutoTokenizer.from_pretrained("shailja/fine-tuned-codegen-2B-Verilog")
model = AutoModelForCausalLM.from_pretrained("shailja/fine-tuned-codegen-2B-Verilog").to(device)
input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(device)
sample = model.generate(input_ids, max_length=128, temperature=0.5, top_p=0.9)
print(tokenizer.decode(sample[0], truncate_before_pattern=[r"endmodule"]) + "endmodule")
📚 ドキュメント
モデル概要
VeriGenモデルは20億パラメータのモデルで、CodeGen-multi-2B のファインチューニング版です。Verilogデータセット でトレーニングされ、コンテキスト長は2048です。
用途
想定される用途
このモデルは、GitHubや教科書からのVerilogでトレーニングされています。そのため、「2対1マルチプレクサを実装するモジュールを書け」のようなコマンドはうまく機能しません。ただし、プロンプトに「module mux」のようなモジュールヘッダーの部分行を追加すると、Verilogの学習支援に役立ちます。
⚠️ 重要な注意
このモデルの事前学習データセットは、許容可能なライセンスのみでフィルタリングされていません。そのため、モデルはデータセットからソースコードをそのまま生成する可能性があります。コードのライセンスには、帰属表示やその他の特定の要件がある場合があり、それらを尊重する必要があります。
制限事項
このモデルは、オープンソースのVerilogソースコードでトレーニングされています。ソースコードの主な自然言語は英語ですが、他の言語も含まれています。そのため、このモデルはある程度のコンテキストが与えられればVerilogのスニペットを生成できますが、生成されたコードが意図通りに動作することは保証されません。非効率であったり、バグや脆弱性が含まれている可能性があります。モデルの制限事項の詳細については、この論文 を参照してください。
トレーニング
モデル
- アーキテクチャ:マルチクエリアテンションを持つGPT - 2モデル
- 事前学習ステップ:150k
- 事前学習トークン:約720億
- 精度:fp16
ハードウェア
- GPU:3台のTesla A100
- トレーニング時間:8日
📄 ライセンス
このモデルは、BigCode OpenRAIL - M v1ライセンス契約の下でライセンスされています。完全な契約内容はこちら で確認できます。
🔖 引用
@misc{https://doi.org/10.48550/arxiv.2212.11140,
doi = {10.48550/ARXIV.2212.11140},
url = {https://arxiv.org/abs/2212.11140},
author = {Thakur, Shailja and Ahmad, Baleegh and Fan, Zhenxing and Pearce, Hammond and Tan, Benjamin and Karri, Ramesh and Dolan-Gavitt, Brendan and Garg, Siddharth},
title = {Benchmarking Large Language Models for Automated Verilog RTL Code Generation},
publisher = {arXiv},
year = {2022},
copyright = {arXiv.org perpetual, non-exclusive license}
}