/ Модель

Характеристики

Контекст
8 192 токена
Параметры
109 млн
Лицензия
Apache 2.0
Архитектура
modernbert · dense
Библиотека
transformers
Опубликована
24 авг 2026

NightJar

Заполнение пропусковТекст → текст4 профессии

ModernBERT-энкодер, предварительно обученный на коде и его описаниях для предсказания маскированных токенов и последующей адаптации к поиску и анализу кода.

202скачиваний за 30 дней2лайкавеса обновлены29 авг 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

NightJar — разработанная Shuu12121 модель-энкодер на базе ModernBERT, предварительно обученная на исходном коде и естественно-языковых описаниях к нему. Это маскированная языковая модель с 109,5 млн параметров, 12 слоями трансформера и контекстом до 8192 токенов; для работы с кодом используется ByteLevel BPE-токенизатор с размером словаря 50 368 и специальными токенами для структуры кода и пробелов.

Модель предназначена как основа для последующего обучения и применения в поиске кода, классификации, обнаружении похожих фрагментов и ранжировании. Она поддерживает предсказание скрытых токенов, но не является причинной языковой моделью и не предназначена прежде всего для автодополнения или диалоговой генерации кода. Для практического поиска автор рекомендует дополнительно обученные конфигурации SentenceTransformer или ColBERT.

Обучение включало корпуса пар кода с описаниями, программные файлы GitHub и материалы StarCoder2 Extras; данные охватывают несколько языков программирования и английский текст. Модель распространяется по лицензии Apache-2.0.

Сценарии применения

  • предсказание пропущенных токенов в исходном коде
  • классификация фрагментов кода после дообучения
  • поиск похожих фрагментов кода после адаптации
  • ранжирование результатов поиска кода после дополнительного обучения
  • изучение представлений кода и его текстовых описаний

Ограничения

Модель не предназначена прежде всего для автодополнения или диалоговой генерации кода. Для прикладного поиска кода README рекомендует использовать дополнительно обученные конфигурации SentenceTransformer или ColBERT.

Для каких профессий подходит4

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

NightJar

NightJar は、ソースコードと、それを説明する自然言語の両方を理解することを目指して 事前学習した ModernBERT ベースのエンコーダーモデルです。

コード検索・分類・類似コード検出・リランキングなどの下流タスク向けの基盤モデルを 想定しています。Causal Language Model ではないため、コード補完や対話形式の コード生成を主目的としたモデルではありません。

モデル仕様

項目設定
モデル形式ModernBERT Masked Language Model
hidden size768
Transformer layers12
attention heads12
intermediate size1,536
vocabulary size50,368
学習時の最大系列長1,024 tokens
mask probability0.3

学習データ

役割の異なる 3 系統のコーパスを組み合わせています。

データ系統Phase 1Phase 2主な役割
Owl code/docstring corpus使用使用関数コードと自然言語による説明のペア
GitHub file programs使用使用実際のプログラムファイルに現れる長めのコード
StarCoder2 Extras全 subset を使用code-only 設定の subset を使用技術文書、Q&A、issue、数式、IR などの周辺### Owl code/docstring corpus

対象は次の 16 言語です。

既存の 8 言語追加した 8 言語
JavaScriptC
RubyC++
GoKotlin
JavaScala
RustSwift
PHPC#
PythonDart
TypeScriptLua

GitHub file programs

GitHub 上のプログラムファイルを言語別に集めたデータセットです。Python、JavaScript、 TypeScript、Java、Go、Rust、Ruby、PHP の 8 言語を対象に、ファイル単位での入力を扱えるようにします。

StarCoder2 Extras

bigcode/starcoder2data-extras から 12 subset(kaggle, stackoverflow, issues, owm, lhq, wikipedia, arxiv, documentation, ir_cpp, ir_low_resource, ir_python, ir_rust)を使用します。Phase 1 ではすべて、Phase 2 では documentation, kaggle, stackoverflow, issues に絞ります。

前処理

  • 空文字列を除外する
  • Phase 1 では、長い入力を既定で 10,000 文字までに制限する
  • 最大系列長を超えた文書は overflow chunk として分割する
  • 学習データの 2% を検証用に分割する
  • source ごとの上限件数は YAML で個別に指定

トークナイザ

NightOwl の設計を引き継いだ ByteLevel BPE トークナイザです。記号が多く、 空白にも意味があるソースコードを壊さずに扱うことを重視しています。

  • 語彙サイズは 50,368
  • [NL]、[Code1]、[AST] などのドメイントークンを予約
  • StarCoder2 Extras の文書構造トークンも予約
  • 1〜32 個の連続スペースを、それぞれ 1 つの予約トークンとして登録
  • 1〜4 個の連続タブ / 連続改行も、同様に 1 トークンとして登録

これらの空白系トークンは special token ではないため、 skip_special_tokens=True でデコードしても取り除かれません。

学習方法

2 段階構成です。どちらも MLM probability は 0.3 ですが、マスクの選び方と データ構成が異なります。

Phase 1: 通常の事前学習

3 系統のデータをすべて混合し、標準的な Masked Language Modeling で学習します。

Phase 2: 継続事前学習

Phase 1 の最終チェックポイントから、line_no_space collator を使って継続学習します。 この collator はコードの行構造を利用しつつ、空白だけのトークンを無視してマスクします。 これによりモデルはよりコードの文脈を学習できると考えています。 長いコードは文字数で切り捨てず、トークナイズ時に複数の chunk へ分割します。

項目Phase 1Phase 2
collatorStandard MLMline_no_space
sequence length1,0241,024
epochs11
per-device batch size88
gradient accumulation steps3232
learning rate5e-55e-5
schedulercosinecosine
warmup ratio0.050.05
weight decay0.010.01
precisionFP16FP16

使い方

Mask されたトークンを予測する

from transformers import pipeline

fill_mask = pipeline(
    "fill-mask",
    model="Shuu12121/NightJar",
    tokenizer="Shuu12121/NightJar",
)

results = fill_mask("def add(a, b):\n    return a [MASK] b", top_k=5)
for result in results:
    print(result["token_str"], result["score"])

エンコーダーとして読み込む

import torch
from transformers import AutoModel, AutoTokenizer

model_id = "Shuu12121/NightJar"
tokenizer = AutoTokenizer.from_pretrained(model_id, use_fast=True)
model = AutoModel.from_pretrained(model_id)
model.eval()

texts = [
    "[NL]\nAdd two values\n[Code1]\ndef add(a, b):\n    return a + b",
    "[NL]\nJoin two strings\n[Code1]\ndef join(a, b):\n    return a + b",
]

inputs = tokenizer(
    texts,
    padding=True,
    truncation=True,
    max_length=1024,
    return_tensors="pt",
)

with torch.no_grad():
    outputs = model(**inputs)

# 動作確認用のmean poolingです。
attention_mask = inputs["attention_mask"].unsqueeze(-1)
embeddings = (
    (outputs.last_hidden_state * attention_mask).sum(dim=1)
    / attention_mask.sum(dim=1).clamp(min=1)
)
print(embeddings.shape)

運用の検索用途には、SentenceTransformer や ColBERT などの構成で追加学習したチェックポイントを使ってください。 また私がコード検索向けにファインチューニングしたモデルShuu12121/NightJar-CodeSearch-Embeddingもあるので活用してください。

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers · fill-mask

Можно запустить

Подбираем GPU…

Класс архитектуры
ModernBertForMaskedLM
Ревизия весов
24bd77c

0 моделей