🚀 CodeLlama-7B-KStack模型
CodeLlama-7B-KStack是在特定數據集上微調後的模型,以Hugging Face Transformers格式呈現。它基於KStack數據集進行微調,該數據集是許可寬鬆的Kotlin代碼的最大集合,因此該模型在處理Kotlin代碼方面表現更優。
🚀 快速開始
模型使用示例
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = 'JetBrains/CodeLlama-7B-KStack'
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name).to('cuda')
input_text = """\
This function takes an integer n and returns factorial of a number:
fun factorial(n: Int): Int {\
"""
input_ids = tokenizer.encode(
input_text, return_tensors='pt'
).to('cuda')
output = model.generate(
input_ids, max_length=60, num_return_sequences=1,
pad_token_id=tokenizer.eos_token_id,
)
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)
FIM使用說明
和基礎模型一樣,我們可以使用FIM。要使用FIM,必須使用以下格式:
'<PRE> ' + prefix + ' <SUF> ' + suffix + ' <MID>'
✨ 主要特性
- 基於KStack數據集微調,在處理Kotlin代碼方面表現更優。
- 支持FIM功能。
📦 安裝指南
文檔未提及具體安裝步驟,可參考Hugging Face Transformers庫的安裝方式。
💻 使用示例
基礎用法
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = 'JetBrains/CodeLlama-7B-KStack'
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name).to('cuda')
input_text = """\
This function takes an integer n and returns factorial of a number:
fun factorial(n: Int): Int {\
"""
input_ids = tokenizer.encode(
input_text, return_tensors='pt'
).to('cuda')
output = model.generate(
input_ids, max_length=60, num_return_sequences=1,
pad_token_id=tokenizer.eos_token_id,
)
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)
高級用法
使用FIM功能時,需使用以下格式:
'<PRE> ' + prefix + ' <SUF> ' + suffix + ' <MID>'
📚 詳細文檔
訓練設置
該模型在一個A100 GPU上進行訓練,使用了以下超參數:
屬性 |
詳情 |
warmup |
5% |
max_lr |
1e - 6 |
num_epochs |
1 |
attention_dropout |
0.1 |
scheduler |
cosine |
total_batch_size |
128 (~65K tokens per step) |
num_epochs |
1 |
更多關於微調的詳細信息可在技術報告中找到(即將發佈!)。
微調數據
為了微調模型,我們使用了KStack數據集,這是許可寬鬆的Kotlin代碼的最大集合。為了提高數據集的質量並過濾掉異常值(如作業任務),我們根據以下規則過濾數據集條目:
- 過濾掉屬於低流行度倉庫(星標和分支總數少於6)的文件。
- 過濾掉屬於Kotlin文件少於5個的倉庫的文件。
- 移除少於20個SLOC的文件。
我們根據以下規則清理剩餘數據集條目的內容:
- 移除所有非ASCII條目。
- 移除所有包行,如
package kotlinx.coroutines.channels
。
- 移除一半的導入行。
我們移除一半的導入是為了避免模型可能出現的幻覺,即模型可能嘗試導入不必要的庫。此外,移除包是因為此信息僅在項目級別有用,並且可能在學習過程中引入額外的噪聲。
評估
為了進行評估,我們使用了Kotlin HumanEval數據集,該數據集包含由人類專家翻譯成Kotlin的HumanEval的所有161個任務。你可以在數據集頁面上找到獲得我們的結果所需的預處理的更多詳細信息,包括運行代碼。
評估結果如下:
模型名稱 |
Kotlin HumanEval通過率 |
CodeLlama-7B |
26.09 |
CodeLlama-7B-KStack |
29.19 |
倫理考量和侷限性
CodeLlama-7B-KStack是一項新技術,使用時存在風險。到目前為止進行的測試並未涵蓋,也不可能涵蓋所有場景。出於這些原因,與所有大語言模型一樣,CodeLlama-7B-KStack的潛在輸出無法提前預測,並且在某些情況下,模型可能會對用戶提示產生不準確或令人反感的響應。該模型是在特定數據格式(Kotlin任務)上進行微調的,偏離此格式也可能導致對用戶查詢的不準確或不理想的響應。因此,在部署CodeLlama-7B-KStack的任何應用程序之前,開發人員應針對其特定的模型應用進行安全測試和調整。
📄 許可證
本項目採用Apache-2.0許可證。