🚀 🦉CodeModernBERT-Owl
🦉CodeModernBERT-Owlは、コード検索とコード理解のタスクに特化して設計された事前学習済みモデルです。以前のバージョンに比べ、Rustをサポートし、複数のプログラミング言語における検索精度を向上させています。
🚀 クイックスタート
このモデルは、Hugging Face Transformersライブラリを使用して簡単にロードすることができます。
⚠️ 重要提示
transformers >= 4.48.0が必要です。
🔗 Colab Demo (Replace with "CodeModernBERT-Owl")
モデルのロード
from transformers import AutoModelForMaskedLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("Shuu12121/CodeModernBERT-Owl")
model = AutoModelForMaskedLM.from_pretrained("Shuu12121/CodeModernBERT-Owl")
コード埋め込みの取得
import torch
def get_embedding(text, model, tokenizer, device="cuda"):
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=256)
if "token_type_ids" in inputs:
inputs.pop("token_type_ids")
inputs = {k: v.to(device) for k, v in inputs.items()}
outputs = model.model(**inputs)
embedding = outputs.last_hidden_state[:, 0, :]
return embedding
embedding = get_embedding("def my_function(): pass", model, tokenizer)
print(embedding.shape)
✨ 主な機能
✅ 最大2048トークンの長いシーケンスをサポート (Microsoftの512トークンモデルと比較)
✅ コード検索、コード理解、コードクローン検出に最適化
✅ GitHubのオープンソースリポジトリ (Java, Rust) で微調整
✅ CodeHawks/CodeMorphシリーズの中で最高の精度を達成
✅ 多言語サポート: Python, PHP, Java, JavaScript, Go, Ruby, およびRust
📦 インストール
このモデルを使用するには、transformers
ライブラリが必要です。以下のコマンドでインストールできます。
pip install transformers>=4.48.0
📚 詳細ドキュメント
モデルパラメータ
パラメータ |
詳細 |
ボキャブラリサイズ |
50,004 |
隠れ層のサイズ |
768 |
隠れ層の数 |
12 |
アテンションヘッドの数 |
12 |
中間層のサイズ |
3,072 |
最大位置埋め込み |
2,048 |
タイプボキャブラリサイズ |
2 |
隠れ層のドロップアウト確率 |
0.1 |
アテンション確率のドロップアウト確率 |
0.1 |
ローカルアテンションウィンドウ |
128 |
ロープのθ |
160,000 |
ローカルアテンションのロープのθ |
10,000 |
評価結果
データセット
📌 候補プールサイズ100のcode_x_glue_ct_code_to_textでテスト
📌 Rust固有の評価は、Shuu12121/rust-codesearch-dataset-openを使用して実施
主要な評価指標の比較(同一シード値)
言語 |
CodeModernBERT-Owl |
CodeHawks-ModernBERT |
Salesforce CodeT5+ |
Microsoft CodeBERT |
GraphCodeBERT |
Python |
0.8793 |
0.8551 |
0.8266 |
0.5243 |
0.5493 |
Java |
0.8880 |
0.7971 |
0.8867 |
0.3134 |
0.5879 |
JavaScript |
0.8423 |
0.7634 |
0.7628 |
0.2694 |
0.5051 |
PHP |
0.9129 |
0.8578 |
0.9027 |
0.2642 |
0.6225 |
Ruby |
0.8038 |
0.7469 |
0.7568 |
0.3318 |
0.5876 |
Go |
0.9386 |
0.9043 |
0.8117 |
0.3262 |
0.4243 |
✅ すべての対象言語で最高の精度を達成
✅ 追加の微調整GitHubデータを使用して、Javaの精度を大幅に向上
✅ 以前のモデルを上回り、特にPHPとGoで優れた性能
Rust (独自データセット)
指標 |
CodeModernBERT-Owl |
MRR |
0.7940 |
MAP |
0.7940 |
R-Precision |
0.7173 |
K別評価指標
K |
Recall@K |
Precision@K |
NDCG@K |
F1@K |
Success Rate@K |
Query Coverage@K |
1 |
0.7173 |
0.7173 |
0.7173 |
0.7173 |
0.7173 |
0.7173 |
5 |
0.8913 |
0.7852 |
0.8118 |
0.8132 |
0.8913 |
0.8913 |
10 |
0.9333 |
0.7908 |
0.8254 |
0.8230 |
0.9333 |
0.9333 |
50 |
0.9887 |
0.7938 |
0.8383 |
0.8288 |
0.9887 |
0.9887 |
100 |
1.0000 |
0.7940 |
0.8401 |
0.8291 |
1.0000 |
1.0000 |
別のおすすめモデル
1. CodeSearch-ModernBERT-Owl🦉 (https://huggingface.co/Shuu12121/CodeSearch-ModernBERT-Owl)
コードサーチに特化したモデルが必要な場合、このモデルは非常におすすめです。
2. CodeModernBERT-Snake🐍 (https://huggingface.co/Shuu12121/CodeModernBERT-Snake)
シーケンス長が長い、またはモデルサイズが小さい事前学習済みモデルが必要な場合は、このモデルが理想的です。
- 最大シーケンス長: 8192トークン
- 小さいモデルサイズ: ~75Mパラメータ
3. CodeSearch-ModernBERT-Snake🐍 (https://huggingface.co/Shuu12121/CodeSearch-ModernBERT-Snake)
コードサーチに特化しつつ長いシーケンスを処理できるモデルが欲しい場合には、このモデルが最適な選択です。
- 最大シーケンス長: 8192トークン
- 高いコード検索性能
🔧 技術詳細
このモデルは、コード検索とコード理解のタスクに特化して設計された事前学習済みモデルです。以前のバージョンに比べ、Rustをサポートし、複数のプログラミング言語における検索精度を向上させています。
📄 ライセンス
📄 Apache-2.0
📧 連絡先
📩 質問がある場合は、以下のメールアドレスにご連絡ください。
📧 shun0212114@outlook.jp