跳至主要内容

Model

Model 是 Python 介面的核心入口。通常一個 .tinyloop artifact 建立一個實例,長時間重用;釋放 VRAM 時可呼叫 close() 或使用 with

tinyloop_py.Model(path, max_seq_len=2048)

import tinyloop_py
model = tinyloop_py.Model("model.tinyloop", max_seq_len=2048)

等價 alias:

model = tinyloop_py.load("model.tinyloop", max_seq_len=2048)

參數

名稱型別預設說明
pathstr.tinyloop 檔案路徑。參考 Model format
max_seq_lenint2048序列長度上限(prompt + generated)。建立時會依此配置 KV 相關 buffer,過大會直接增加 VRAM。需 > 0

回傳

回傳可用的 tinyloop_py.Model 實例。建構期間會完成:

  1. 讀取並驗證 artifact header
  2. 上傳權重至 GPU
  3. 建立 runtime buffer
  4. 執行 tile sizing

例外

  • RuntimeError:路徑不存在、artifact 無效、GPU 記憶體不足等。
  • ValueErrormax_seq_len <= 0

Model.close() 與 context manager

with tinyloop_py.Model("model.tinyloop") as model:
logits = model.score_last(tokens, loops=8)
# 離開 with 後資源釋放
  • close() 為同步釋放,且 idempotent
  • close 後所有公開方法都會丟 RuntimeError

Model.config()

cfg = model.config()

回傳模型靜態架構資訊(來自 header,不需 forward):

Key意義
dimhidden dimension D
n_heads注意力頭數
ffn_dimFFN 維度
vocab_size詞彙表大小
embed_factor_dim因式分解 embedding 維度(0 表示 full-rank)
n_pre_blockspre-loop blocks 數量
default_loops預設 loop 深度

Model.vram_usage_mb()

vram_mb = model.vram_usage_mb()

回傳目前 Model 持有的 VRAM(MB):權重、runtime buffers、可選 FP16 body cache、仍存活的 prefix/resume 相關物件。nvidia-smi 仍會顯示額外程序級開銷(CUDA context 等)。

分詞與輸入型別

TinyLoop 本身不提供 tokenizer。請使用外部 tokenizer,並以 np.ndarray[int32] 提供 token ids。

import numpy as np
from transformers import GPT2TokenizerFast
import tinyloop_py

tok = GPT2TokenizerFast.from_pretrained("gpt2")
model = tinyloop_py.Model("model.tinyloop", max_seq_len=2048)
prompt_ids = np.asarray(tok.encode("Looped transformers are", add_special_tokens=False), dtype=np.int32)
out_ids = model.generate(prompt_ids, max_tokens=32, loops=8, temperature=0.0, top_k=50)

執行緒安全

單一 Model 實例不是並行推論安全,因為其 CUDA stream 與 scratch buffers 會共享。建議:

  1. 每個 Model 外層加鎖。
  2. 每個 worker 建立獨立 Model
  3. 多程序部署(避開 GIL)。

決定性

在 greedy (temperature=0.0) 下,相同輸入可得到可重現輸出。非零溫度取樣會引入隨機性。