🚀 GPT-Code-Clippy-1.3B-APPS-all
GPT-Code-Clippy-1.3B-APPS-all 是一個基於GPT-Neo-1.3B在APPS數據集上微調的模型,專門用於解決編程任務,為編程開發提供了強大的支持。
🚀 快速開始
本模型可直接使用文本生成管道進行調用。以下示例每次運行時都會生成不同的序列:
from transformers import AutoModelForCausalLM, AutoTokenizer, FlaxAutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("flax-community/gpt-neo-1.3B-apps-all-2")
tokenizer = AutoTokenizer.from_pretrained("flax-community/gpt-neo-1.3B-apps-all-2")
prompt = """
A function to greet user. Given a user name it should say hello
def greet(name):
ANSWER:
"""
input_ids = tokenizer(prompt, return_tensors='pt').input_ids.to(device)
start = input_ids.size(1)
out = model.generate(input_ids, do_sample=True, max_length=50, num_beams=2,
early_stopping=True, eos_token_id=tokenizer.eos_token_id, )
print(tokenizer.decode(out[0][start:]))
✨ 主要特性
- 專業編程任務解決:基於GPT-Neo-1.3B在APPS數據集上微調,專注於解決編程任務。
- 豐富訓練數據支持:使用包含10,000個編碼問題、131,836個測試用例和232,444個人工編寫的真實解決方案的APPS數據集進行訓練。
📦 安裝指南
訓練此模型的腳本可在此處找到。
使用以下命令結合上述腳本可復現訓練過程:
python run_clm_apps.py \
--output_dir ./gpt-neo-125M-apps \
--model_name_or_path EleutherAI/gpt-neo-125B \
--dataset_name ./apps.py \
--dataset_config_name formatted \
--do_train --do_eval \
--block_size="1024" \
--per_device_train_batch_size="3" \
--per_device_eval_batch_size="3" \
--preprocessing_num_workers="16" \
--learning_rate="8e-5" \
--warmup_steps="800" \
--adam_beta1="0.9" \
--adam_beta2="0.98" \
--weight_decay="0.1" \
--overwrite_output_dir \
--num_train_epochs="5" \
--logging_steps="50" \
--eval_steps="2000" \
--report_to="wandb" \
--dtype="bfloat16" \
--save_strategy epoch \
--gradient_accumulation_steps 1 \
--all_data true \
📚 詳細文檔
模型描述
GPT-Neo-1.3B-APPS-all 是在APPS數據集上微調的GPT-Neo-1.3B模型,專門用於解決編程任務。
訓練數據
該模型在自動化編程進度標準(APPS)數據集上進行訓練。該數據集總共包含10,000個編碼問題,有131,836個用於檢查解決方案的測試用例和232,444個人工編寫的真實解決方案。問題可能較為複雜,平均每個問題的長度為293.2個單詞。數據被均勻地分為訓練集和測試集,每個集合包含5,000個問題。
本模型使用了APPS數據集的大部分數據進行微調,包括訓練集和測試集,以探索此訓練任務對模型在其他代碼合成評估指標上性能的影響。僅在訓練集上微調的模型可在此處找到。
訓練過程
訓練此模型使用的腳本可在此處找到。
訓練使用AdamW優化器進行5個epoch的訓練,並採用線性衰減學習率調度,有800個熱身步驟。要復現訓練過程,可使用上述腳本結合以下命令:
python run_clm_apps.py \
--output_dir ./gpt-neo-125M-apps \
--model_name_or_path EleutherAI/gpt-neo-125B \
--dataset_name ./apps.py \
--dataset_config_name formatted \
--do_train --do_eval \
--block_size="1024" \
--per_device_train_batch_size="3" \
--per_device_eval_batch_size="3" \
--preprocessing_num_workers="16" \
--learning_rate="8e-5" \
--warmup_steps="800" \
--adam_beta1="0.9" \
--adam_beta2="0.98" \
--weight_decay="0.1" \
--overwrite_output_dir \
--num_train_epochs="5" \
--logging_steps="50" \
--eval_steps="2000" \
--report_to="wandb" \
--dtype="bfloat16" \
--save_strategy epoch \
--gradient_accumulation_steps 1 \
--all_data true \
預期用途和侷限性
使用方法
你可以直接使用文本生成管道來使用此模型。以下示例每次運行時都會生成不同的序列:
from transformers import AutoModelForCausalLM, AutoTokenizer, FlaxAutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("flax-community/gpt-neo-1.3B-apps-all-2")
tokenizer = AutoTokenizer.from_pretrained("flax-community/gpt-neo-1.3B-apps-all-2")
prompt = """
A function to greet user. Given a user name it should say hello
def greet(name):
ANSWER:
"""
input_ids = tokenizer(prompt, return_tensors='pt').input_ids.to(device)
start = input_ids.size(1)
out = model.generate(input_ids, do_sample=True, max_length=50, num_beams=2,
early_stopping=True, eos_token_id=tokenizer.eos_token_id, )
print(tokenizer.decode(out[0][start:]))
侷限性和偏差
- 過度依賴:此模型可能會生成看似合理但不一定正確的解決方案。如果不恰當地評估生成的代碼,可能會導致負面後果,如引入錯誤或安全漏洞。因此,用戶必須意識到使用此語言模型的侷限性和潛在的負面後果。
- 經濟和勞動力市場影響:在大型代碼數據集上訓練的大型語言模型(如本模型)能夠生成高質量的代碼,有可能自動化部分軟件開發過程,這可能會對軟件開發人員產生負面影響。然而,正如論文中所討論的,根據O*NET OnLine的軟件開發人員總結報告所示,開發人員不僅僅是編寫軟件。
- 偏差:該模型在包含特定格式提示問題的數據上進行訓練。如果提示格式與APPS數據集中使用的格式不同,模型的性能可能會變差。
此模型是微調後的GPT-Neo,可能繼承了它的偏差和侷限性。詳情請參閱GPT-Neo模型卡片。
評估結果
即將推出...
🔧 技術細節
📄 許可證
本項目採用MIT許可證。
信息表格
屬性 |
詳情 |
模型類型 |
基於GPT-Neo-1.3B在APPS數據集上微調的模型 |
訓練數據 |
自動化編程進度標準(APPS)數據集,包含10,000個編碼問題、131,836個測試用例和232,444個人工編寫的真實解決方案 |
常用提示信息
⚠️ 重要提示
此模型可能會生成看似合理但不一定正確的解決方案。如果不恰當地評估生成的代碼,可能會導致負面後果,如引入錯誤或安全漏洞。因此,用戶必須意識到使用此語言模型的侷限性和潛在的負面後果。
💡 使用建議
在使用此模型生成的代碼時,請務必對代碼進行充分的測試和評估,以確保其正確性和安全性。同時,要注意提示格式對模型性能的影響,儘量使用與APPS數據集中相似的提示格式。