Downloads · 30 days
16
52% of all-time downloads
Shuu12121/CodeDiff-Owl-ModernBERT-base
CodeDiff-Owl-ModernBERT-base is a fill-mask model from Shuu12121. Use it when you need the model to fill a missing word. The card lists the license as apache-2.0.
CodeDiff-Owl-ModernBERT-base は、GitHub の コード差分(diff)とコミットメッセージ を対象にマスク化言語モデル (MLM) で学習した、diff・コミット履歴特化の ModernBERT 系モデル です。
Downloads · 30 days
16
52% of all-time downloads
All-time downloads
31
Public
Parameters
150M
599 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors599 MB · 99%
From the Hugging Face model README
CodeDiff-Owl-ModernBERT-base は、GitHub の コード差分(diff)とコミットメッセージ を対象にマスク化言語モデル (MLM) で学習した、diff・コミット履歴特化の ModernBERT 系モデル です。
ModernBERT"[CLS]" + commit_message + "[SEP]" + diffコミットメッセージと diff を同時にエンコードすることで、「どのような変更(diff)に対して、どのような説明(コミットメッセージ)が付くか」 という対応関係を捉えることを目的としています。 今後、学習を継続した「完全版」を公開予定です(本モデルは 1.8 epoch 時点の途中版です)。
コード変更差分に対する意味的検索
コミットメッセージと diff の表現獲得
diff+コミットメッセージを入力とする下流タスクの初期化
diff が 32KB を超える場合は途中で打ち切り
テキストとして読み取り可能な diff のみを利用
初期化: ModernBERTアーキテクチャをもとにランダムな初期値から学習
タスク: マスク化言語モデル (MLM)
入力フォーマット:
"[CLS]" + commit_message + "[SEP]" + diff
※実装で特別な変更は加えていません
バッチサイズ: 64
学習率 (learning rate): 1e-6
エポック数: 1.8 epoch(時間制約により途中で打ち切り)
学習時間: 約 4日間
その他:
今後、同様の設定でもう少し長く学習した「完全版」を公開予定です。
トークナイザには、以下のように「2つの入力」として与えてください。
from transformers import AutoTokenizer, AutoModel
model_name = "Shuu12121/CodeDiff-Owl-ModernBERT-base"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModel.from_pretrained(model_name)
commit_message = "Fix bug in user login flow"
diff_text = """
diff --git a/app/auth.py b/app/auth.py
index 1234567..89abcde 100644
--- a/app/auth.py
+++ b/app/auth.py
@@ -10,7 +10,9 @@ def login(user, password):
- if user.password == password:
- return True
- return False
+ if not user:
+ return False
+ return user.check_password(password)
"""
inputs = tokenizer(
commit_message,
diff_text,
return_tensors="pt",
truncation=True,
)
outputs = model(**inputs)
last_hidden_state = outputs.last_hidden_state # [batch, seq_len, hidden]
cls_embedding = last_hidden_state[:, 0] # [CLS] トークンの埋め込み
cls_embedding を コミット+diff の表現ベクトル として検索・クラスタリング等に利用することを想定しています。