🚀 Code LLaMA 7B Instruct Solidity
このモデルは、70億パラメータのCode LLaMA - Instructを微調整したもので、PEFTライブラリによる4-bit QLoRA微調整を用いてSolidityスマートコントラクトを生成します。
🚀 クイックスタート
このモデルは、Solidityスマートコントラクトの生成に特化しています。以下のセクションでは、モデルの訓練データ、パラメータ、使用例などについて詳しく説明します。
✨ 主な機能
- 4-bit QLoRA微調整による効率的な訓練
- Solidityスマートコントラクトの生成
📦 インストール
このREADMEには具体的なインストール手順が記載されていないため、このセクションは省略されます。
💻 使用例
基本的な使用法
from transformers import BitsAndBytesConfig, AutoTokenizer, AutoModelForCausalLM
import torch
import accelerate
use_4bit = True
bnb_4bit_compute_dtype = "float16"
bnb_4bit_quant_type = "nf4"
use_double_nested_quant = True
compute_dtype = getattr(torch, bnb_4bit_compute_dtype)
bnb_config = BitsAndBytesConfig(
load_in_4bit=use_4bit,
bnb_4bit_use_double_quant=use_double_nested_quant,
bnb_4bit_quant_type=bnb_4bit_quant_type,
bnb_4bit_compute_dtype=compute_dtype,
load_in_8bit_fp32_cpu_offload=True
)
tokenizer = AutoTokenizer.from_pretrained("AlfredPros/CodeLlama-7b-Instruct-Solidity")
model = AutoModelForCausalLM.from_pretrained("AlfredPros/CodeLlama-7b-Instruct-Solidity", quantization_config=bnb_config, device_map="balanced_low_0")
input='Make a smart contract to create a whitelist of approved wallets. The purpose of this contract is to allow the DAO (Decentralized Autonomous Organization) to approve or revoke certain wallets, and also set a checker address for additional validation if needed. The current owner address can be changed by the current owner.'
prompt = f"""### Instruction:
Use the Task below and the Input given to write the Response, which is a programming code that can solve the following Task:
### Task:
{input}
### Solution:
"""
input_ids = tokenizer(prompt, return_tensors="pt", truncation=True).input_ids.cuda()
outputs = model.generate(input_ids=input_ids, max_new_tokens=1024, do_sample=True, top_p=0.9, temperature=0.001, pad_token_id=1)
print(tokenizer.batch_decode(outputs.detach().cpu().numpy(), skip_special_tokens=True)[0][len(prompt):])
📚 ドキュメント
訓練データセット
モデルを微調整するために使用されたデータセットは、AlfredProsのSmart Contracts Instructions (https://huggingface.co/datasets/AlfredPros/smart-contracts-instructions) です。このデータセットには、6,003のGPT生成の人間の指示とSolidityソースコードのデータペアが含まれており、LLMの訓練用に処理されています。
訓練パラメータ
Bitsandbytes量子化設定
- 4-bitでロード: true
- 4-bit量子化タイプ: NF4
- 4-bit計算データ型: float16
- 4-bitダブル量子化の使用: true
教師あり微調整トレーナーパラメータ
- 訓練エポック数: 1
- FP16: true
- FP16オプションレベル: O1
- BF16: false
- デバイスごとの訓練バッチサイズ: 1
- 勾配累積ステップ: 1
- 勾配チェックポイント: true
- 最大勾配ノルム: 0.3
- 学習率: 2e-4
- 重み減衰: 0.001
- オプティマイザ: paged AdamW 32-bit
- 学習率スケジューラタイプ: cosine
- ウォームアップ比率: 0.03
訓練詳細
- 使用されたGPU: 1x NVIDIA GeForce GTX 1080Ti
- 訓練時間: 21時間4分57秒
訓練損失
Step Training Loss
100 0.330900
200 0.293000
300 0.276500
400 0.290900
500 0.306100
600 0.302600
700 0.337200
800 0.295000
900 0.297800
1000 0.299500
1100 0.268900
1200 0.257800
1300 0.264100
1400 0.294400
1500 0.293900
1600 0.287600
1700 0.281200
1800 0.273400
1900 0.266600
2000 0.227500
2100 0.261600
2200 0.275700
2300 0.290100
2400 0.290900
2500 0.316200
2600 0.296500
2700 0.291400
2800 0.253300
2900 0.321500
3000 0.269500
3100 0.295600
3200 0.265800
3300 0.262800
3400 0.274900
3500 0.259800
3600 0.226300
3700 0.325700
3800 0.249000
3900 0.237200
4000 0.251400
4100 0.247000
4200 0.278700
4300 0.264000
4400 0.245000
4500 0.235900
4600 0.240400
4700 0.235200
4800 0.220300
4900 0.202700
5000 0.240500
5100 0.258500
5200 0.236300
5300 0.267500
5400 0.236700
5500 0.265900
5600 0.244900
5700 0.297900
5800 0.281200
5900 0.313800
6000 0.249800
6003 0.271939
📄 ライセンス
このモデルは、Llama2ライセンスの下で提供されています。