/ Модель

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

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

NightOwl-35M

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

Компактный ModernBERT-энкодер для маскированного языкового моделирования кода и построения систем поиска по коду после дополнительной настройки.

33скачиваний за 30 дней0лайковвеса обновлены31 июл 2026

Бенчмарки

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

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

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

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

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

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

NightOwl-35M — лёгкий кодовый энкодер семейства NightOwl, разработанный Shuu12121 и обученный с нуля на архитектуре ModernBERT. Это версия примерно с 34,1 млн параметров для сценариев, где важны низкие требования к памяти и задержке, включая инференс на CPU и поиск по большим корпусам кода. Модель использует 10 слоёв Transformer, локальное и глобальное внимание, RoPE и общий для семейства BPE-токенизатор с размером словаря 50 368. Метаданные указывают контекст 8 192 токена, однако в README отмечено, что обучающие последовательности были короче, поэтому качество на длинном коде не гарантируется.

Модель обучена в два этапа с маскированным языковым моделированием: сначала на смеси кода, естественного языка и документации, затем на кодовых данных с маскированием целых строк. Она предназначена для заполнения пропусков в коде и как основа для извлечения признаков; для практического поиска README рекомендует дообучить её в обёртке SentenceTransformer. Модель не генерирует код, а её компактный размер предполагает компромисс между скоростью и качеством по сравнению с более крупными вариантами семейства. Данные охватывают Python, JavaScript, TypeScript, Java, Go, Rust, Ruby и PHP; лицензия — Apache-2.0.

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

  • Заполнение замаскированных фрагментов исходного кода
  • Извлечение признаков из кода для последующей обработки
  • Подготовка компактного энкодера для поиска по большим корпусам кода после дообучения
  • Инференс кодовой языковой модели на CPU или устройстве с ограниченной памятью

Ограничения

Это энкодер, а не генеративная модель; для кодового поиска требуется дополнительная настройка в SentenceTransformer. Хотя метаданные указывают контекст 8 192 токена, в README говорится, что обучающие последовательности были короче, поэтому качество на длинном коде может снижаться; обучение также ограничено восемью языками программирования.

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

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

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

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

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

Открыть на Hugging Face

NightOwl-35M🦉

NightOwl-35M は、NightOwl ファミリーと同一の2フェーズ手法で一から事前学習した、軽量な ModernBERT 系コードエンコーダです。

NightOwl-base(≈150M)では重すぎる用途 — CPU 推論、オンデバイス検索、大規模コーパスの一括埋め込み — を想定した省メモリ・低レイテンシ版です。 トークナイザはファミリー共通のため、上位モデルとインデックスの互換性を保ったまま差し替えられます。

チェックポイント

他モデルと同様に2フェーズで学習し、最終版を公開します。

RepoSizePhase説明
Shuu12121/NightOwl-35M-Pre35MPhase 1混合データでの MLM 事前学習(code + NL + docs)
Shuu12121/NightOwl-35M35MPhase 2コード限定の行単位 MLM 継続学習 — 推奨

モデルサイズ

ModernBERT エンコーダ(local/global 交互アテンション、RoPE 位置埋め込み)。トークナイザはファミリー共通の 50,368 語彙 BPE です。

NightOwl-35MNightOwlNightOwl-large
ArchitectureModernBERTModernBERTModernBERT
パラメータ数(概算)≈34M≈150M≈300M
hidden_size3847681024
num_hidden_layers101928
num_attention_heads61216
intermediate_size76815361536
vocab_size50,36850,36850,368
学習時 max length1024 (Phase 1) / 2048 (Phase 2)1024 / 20481024 / 2048

パラメータ内訳

構成要素計算パラメータ数
トークン埋め込み50,368 × 384≈19.3M(全体の約56%)
Transformer 10層1層あたり ≈1.48M≈14.8M
MLM ヘッド(decoder は埋め込みと重み共有、bias のみ)384×384 + 50,368≈0.2M
合計≈34.3M

語彙を上位モデルと共有しているため、この規模では埋め込み行列が全体の過半を占めます。非埋め込みパラメータは ≈15M です。

アーキテクチャ詳細

項目値
global_attn_every_n_layers3(全10層中、layer 0/3/6/9 の4層が global、残り6層が local)
local_attention_window128
global_rope_theta160,000
local_rope_theta10,000
max_position_embeddings8,192
hidden_activationGeLU(GeGLU 型 MLP)
classifier_poolingCLS
attention_bias / mlp_bias / norm_biasすべて false
dtypefloat32(学習は fp16 混合精度)

max_position_embeddings は 8,192 ですが、**実際に学習した系列長はどちらも1024トークンです。それを超える長さは外挿になるため、長文コードでの品質は保証されません。

学習データ

ファミリー共通。Phase 1 は全ソースを使用し、Phase 2 はコード関連サブセットのみで継続学習します。

1. bigcode/starcoder2data-extras(12サブセット)

max_samples はサブセットごとのサンプリング上限、max_chars は長文ドキュメントの打ち切り長です。

Subsetmax_samples優先度備考Phase 2
kaggle2,000,000highノートブック形式のコード✅
stackoverflow2,000,000highQ&A のコードスレッド✅
issues1,000,000mediumGitHub issue テキスト✅
owm1,000,000mediumOpen web math—
lhq3,000,000high高品質テキスト—
wikipedia1,000,000medium百科事典的自然言語—
arxiv600,000low長い LaTeX 文書(max_chars=10,000)—
documentation2,000,000high技術ドキュメント✅
ir_cpp100,000lowC++ IR(max_chars=5,000)—
ir_low_resource100,000low低リソース言語 IR(max_chars=5,000)—
ir_python100,000lowPython IR(max_chars=5,000)—
ir_rust100,000lowRust IR(max_chars=5,000)—

2. Shuu12121/github-file-programs-dataset(8言語)

ファイル単位のソースコード。言語ごとに1リポジトリ(テキストフィールド: content)。両フェーズで使用します。

python, javascript, typescript, java, go, rust, ruby, php

サンプリング上限: Phase 1 — 1言語あたり最大 1,000,000 ファイル / Phase 2 — 最大 2,000,000 ファイル。

学習手順

両フェーズとも mlm_probability = 0.3 のマスク言語モデリングです。

  1. Phase 1 — 混合事前学習. 全データソース(code + NL + docs)に対する通常のランダムトークン MLM(mlm collator)。NightOwl-35M-Pre を生成。
  2. Phase 2 — コード限定の継続学習. コード関連サブセットのみに対する行単位 MLM(line_no_space collator)。ランダムトークンではなくソースコードの行全体をマスクし、コード検索の下流タスクに目的関数を近づけます。NightOwl-35M を生成。

長い事例はチャンク分割(split_long_examples: true)し、打ち切らずに全トークンを使用します。

HyperparameterNightOwl-35MNightOwl (base)NightOwl-large
mlm_probability0.30.30.3
スケジューラcosine, warmup ratio 0.05cosine, warmup ratio 0.05cosine, warmup ratio 0.05
Learning rateTBD5e-55e-5
Weight decay0.010.010.01
Precisionfp16fp16fp16
Epochs111
per_device_train_batch_size1684
gradient_accumulation_steps163264
実効バッチサイズ256256256
Phase 1 max_length102410241024
Phase 2 max_length102420482048

実効バッチサイズはファミリー全体で 256 に揃えており、デバイス単位の分割のみが異なります。

使い方

NightOwl-35M はエンコーダのバックボーンです。マスク言語モデリング / 特徴抽出にそのまま読み込むか、コード検索用に SentenceTransformer としてラップして使います。

Masked language modeling

from transformers import AutoTokenizer, AutoModelForMaskedLM

tokenizer = AutoTokenizer.from_pretrained("Shuu12121/NightOwl-35M")
model = AutoModelForMaskedLM.from_pretrained("Shuu12121/NightOwl-35M")

特徴抽出

from transformers import AutoTokenizer, AutoModel
import torch

tokenizer = AutoTokenizer.from_pretrained("Shuu12121/NightOwl-35M")
model = AutoModel.from_pretrained("Shuu12121/NightOwl-35M")

code = "def add(a, b):\n    return a + b"
inputs = tokenizer(code, return_tensors="pt", truncation=True, max_length=2048)
with torch.no_grad():
    embeddings = model(**inputs).last_hidden_state  # [1, seq_len, 384]

出力次元は 384 です(base の 768、large の 1024 と異なる点に注意)。

制限事項

  • NightOwl-35M は理解・検索用のエンコーダであり、生成モデルではありません — コードは生成できません。
  • コード検索性能は SentenceTransformer でのファインチューニング後に発揮されます。素のバックボーンはそのままでは検索器として使えません。
  • 容量が小さいぶん、上位モデルより下流性能は低くなります。速度・メモリと精度のトレードオフを前提としたモデルです。
  • 学習データは8つのプログラミング言語に偏っており、それ以外の言語では性能が落ちる可能性があります。
  • 事前学習データは公開ソースからサンプリングしており、バグ・安全でないパターン・偏った内容を含む可能性があります。
  • max_position_embeddings は 8,192 ですが実学習長は最大 2,048 です。長い入力では品質が劣化する可能性があります。

引用

@misc{owl_code_pretraining,
  author       = {Shun0212},
  title        = {Owl Code Pretraining: A minimal toolkit for building code-specialized pretrained encoders},
  year         = {2026},
  publisher    = {GitHub},
  howpublished = {\url{https://github.com/Shun0212/codeowl-training-core}}
}

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей