コンテンツにスキップ

SDK Sparse Event-Memory LM ガイド

目的

このガイドは、SDKからSparseEventMemoryLMを構築し、局所学習を実行し、再開可能なアーティファクトをAPIへ送信する方法を示します。対象実装はEvoSpikeNet-Core/evospikenet/sdk/sparse_event_memory.pyです。

このモデルは、密なSpikingEvoTextLM/ChronoSpikeAttention経路とは別です。主CSRシナプスはINT8 bufferであり、Adamは共有語彙基底、ルータ、低ランクアダプタ、正規化層だけを更新します。

SDK公開API

evospikenet.sdkから以下を直接インポートできます。

API 用途
SparseEventMemoryConfig モデル・checkpoint用の直列化可能な構成
build_sparse_event_memory_model() 構成からモデルを生成し、必要ならデバイスへ移動
create_sparse_event_memory_artifact_payload() state dict、config.jsonmemory_report.jsonをメモリ上で作成
upload_sparse_event_memory_artifacts() 3つのアーティファクトをSDK APIへ送信

ローカル学習と可塑性

import torch
from evospikenet.sdk import SparseEventMemoryConfig, build_sparse_event_memory_model

config = SparseEventMemoryConfig(
    vocab_size=32768,
    d_model=2048,
    num_transformer_blocks=12,
    factor_rank=128,
    connectivity=0.005,
    num_experts=2,
    router_top_k=1,
    adapter_rank=16,
)
model = build_sparse_event_memory_model(config, device="cuda")
optimizer = torch.optim.Adam(model.parameters(), lr=1e-4)

# input_tokens / target_tokens: (batch, sequence) の整数トークンID
optimizer.zero_grad(set_to_none=True)
loss = model.sampled_cross_entropy(input_tokens, target_tokens, negative_samples=1024)
loss.backward()
optimizer.step()
local_updates = model.apply_local_plasticity()

apply_local_plasticity()はAdamの成功後に必ず実行します。これは主INT8 CSR値を局所Hebbian則で更新し、記録された活動統計を解放します。学習ステップを中断した場合はclear_local_plasticity()を呼び出します。

SDKデモアプリケーション

EvoSpikeNet-Core/examples/sdk/programs/sparse_event_memory_sdk_demo.py は、日本語トークナイザーで短い文をtokenizeし、sampled softmax学習、局所可塑性、メモリ報告を行います。

cd EvoSpikeNet-Core
python examples/sdk/programs/sparse_event_memory_sdk_demo.py \
  --text "スパイキング言語モデルの局所可塑性を検証します。" \
  --steps 3

主なオプション:

オプション 既定値 内容
--tokenizer-name cl-tohoku/bert-base-japanese-v3 tokenizer名またはローカルパス
--device CUDA利用可能時はcuda 実行デバイス
--d-model 64 デモの状態次元
--num-blocks 2 疎イベントブロック数
--connectivity 0.05 CSR行ごとの接続密度
--negative-samples 128 sampled softmaxの負例数
--steps 3 ローカル学習ステップ数
--upload false SDK APIへアーティファクトを送信

APIへのアーティファクト送信

--uploadを指定すると、デモはEvoSpikeNetAPIClientを使ってログセッションを作成し、以下をllm_type="SparseEventMemoryLM"として送信します。

種別 ファイル 内容
model sparse_event_memory_lm.pth 重みとINT8 CSR bufferを含むstate dict
config config.json architecture: sparse_event_memoryを含む再開用構成
log memory_report.json trainable parameter数と固定CSR保持量
python examples/sdk/programs/sparse_event_memory_sdk_demo.py \
  --upload \
  --base-url http://localhost:8000 \
  --api-key "$EVOSPIKENET_API_KEY"

トークナイザーはアプリケーション側の管理対象です。アーティファクト保管時に必要なら、既存のupload_artifact()でtokenizer archiveを別途送信し、同じllm_typeを指定してください。

再開時の注意

config.jsonarchitecturesparse_event_memoryであることを確認してから、SparseEventMemoryConfigbuild_sparse_event_memory_model()で同じ構造を作成し、load_state_dict()を呼び出します。密なSpikingEvoTextLMのcheckpointとは互換ではありません。

制約

  • memory_report()は保持領域の報告であり、activation、optimizer、sparse kernel workspaceを含むピークVRAM保証ではありません。
  • PyTorchのCSR演算はbetaであり、GPU性能と対応演算はPyTorch/CUDAの組み合わせに依存します。
  • forward()は全語彙logitsを生成します。学習にはVRAMを抑えるsampled_cross_entropy()を使用してください。
  • このSDK helperは整数text token用です。画像、波形、MFCC、またはSpikingEvoMultiModalLMのdense融合checkpointを直接入力できません。音声・画像・マルチモーダル対応はMEMERIED SpikeNetLM計画の未実装範囲です。

関連