🚀 VeriGen
VeriGen是一個用於自動生成Verilog RTL代碼的模型,基於CodeGen-multi-2B微調而來,在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")
✨ 主要特性
- 針對性訓練:基於CodeGen-multi-2B在Verilog數據集上微調,適用於Verilog代碼生成。
- 一定上下文生成能力:在提供部分模塊頭信息等上下文時,可生成Verilog代碼片段。
📚 詳細文檔
模型概述
VeriGen模型是一個具有20億參數的模型,是CodeGen-multi-2B的微調版本。它在Verilog數據集上進行訓練,上下文長度為2048。
使用說明
預期用途
該模型在來自GitHub和教科書的Verilog代碼上進行訓練。因此,它不是一個指令模型,像“編寫一個實現2對1多路複用器的模塊”這樣的命令效果不佳。然而,在提示文本中添加部分模塊頭信息(如“module mux”),它就能成為一個有效的Verilog教學助手。
歡迎在社區標籤中分享你的生成結果!
歸屬與其他要求
該模型的預訓練數據集並非僅篩選了允許使用的許可證。不過,該模型可以從數據集中逐字生成源代碼。代碼的許可證可能要求進行歸屬聲明和/或遵守其他特定要求,必須予以尊重。
侷限性
該模型在來自開源的Verilog源代碼上進行訓練。源代碼中主要使用的自然語言是英語,儘管也存在其他語言。因此,該模型能夠在提供一些上下文的情況下生成Verilog代碼片段,但生成的代碼不能保證按預期工作。它可能效率低下、包含錯誤或漏洞。有關模型侷限性的深入討論,請參閱論文。
訓練信息
模型信息
- 架構:具有多查詢注意力的GPT - 2模型
- 預訓練步驟:150k
- 預訓練令牌:約720億
- 精度:fp16
硬件信息
📄 許可證
該模型遵循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}
}
⚠️ 重要提示
請在接受之前閱讀BigCode OpenRAIL - M許可協議。
屬性 |
詳情 |
模型類型 |
文本生成 |
數據集 |
shailja/Verilog_GitHub |
庫名稱 |
transformers |
標籤 |
代碼 |
模型名稱 |
VeriGen |
任務類型 |
文本生成 |
評估數據集 |
VeriEval (Prompted) |
評估指標 |
pass@1 |
許可證 |
bigcode-openrail-m |