Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LingModel

端到端多模态模型。输出:统一 lm_head(文本/Agent)+ 连续 image/audio 生成(flow)+ 可训 codec

Docs

查看配置真实参数量(默认 meta,不占权重内存):

PYTHONPATH=src python scripts/model_summary.py --config configs/model/ling_156m.json --breakdown
# 大模型勿加 --materialize;小模型调试才需要

训练约定(正确性)

路径 标记 Loss
理解图/声 <|image_start|> / <|audio_start|> + image_path(s) / audio_path(s) loss_codec + text CE
生成图/声 <|image_gen_start|> / <|audio_gen_start|> + image_gen_path(s) loss_image_flow / loss_audio_flow
纯文本 无模态标记 text CE
  • 多样本多图:同一条里可有多对 marker,配 image_paths / image_gen_paths 列表。
  • continuous 默认跳过 image_codes(需像素路径)。
  • Flow 打在 gen 槽;理解不做 flow。
  • block_size 截断后会同步裁剪 pixel_values,避免无效 encode。
  • 图像几何:slots=(H/patch)×(W/patch),预算默认 max_image_slots=10000

Tokenizer

详见 docs/tokenizer.md。默认 多语言 ByteLevel BPE + NFC + 逐位数字切分;正式语料下载与混合见该文档 §4

PYTHONPATH=src python scripts/train_tokenizer.py \
  --input data/corpus/tokenizer_mix.jsonl \
  --output-dir outputs/tokenizer-ling-v0 \
  --vocab-size 65536 --digit-mode individual

PYTHONPATH=src python scripts/check_tokenizer.py --tokenizer outputs/tokenizer-ling-v0

数据就绪后直接训练

# 样例多模态布局(含 text/understand/gen 分片 + gen 加权 mixture)
PYTHONPATH=src python scripts/prepare_mm_sample.py --output examples/mm_data --hidden 384

# tokenizer(样例语料仅够 smoke;正式请换大语料,见 docs/tokenizer.md)
PYTHONPATH=src python scripts/train_tokenizer.py \
  --input examples/mm_data/manifests/train.jsonl \
  --output-dir outputs/tokenizer-ling-v0 --vocab-size 512

# 开训前自检(数据流 + understand≠flow + 梯度)
PYTHONPATH=src python scripts/check_train_ready.py

# 联合预训练(默认 TensorBoard;自定义 loss/batch 指标会写入 dashboard)
PYTHONPATH=src python scripts/train.py \
  --stage pretrain \
  --model-config configs/model/ling_40m.json \
  --tokenizer outputs/tokenizer-ling-v0 \
  --data-root examples/mm_data \
  --mixture-config examples/mm_data/mixture.json \
  --train-config configs/train/pretrain.json \
  --output-dir outputs/ling-20m-mm \
  --block-size 256 --max-steps 5 --no-pack-documents \
  --dataloader-num-workers 0 \
  --report-to tensorboard \
  --run-name ling-20m-mm-smoke

真实数据按 docs/data-layout.mdmanifests/ + raw/;用 mixture / 样本 weight 提高 gen 占比,盯 loss_textloss_*_flow

训练监控(Dashboard)

接入点在 scripts/train.py → HF TrainingArguments.report_to + Trainer.log()

方式 命令 / 配置
TensorBoard(默认) --report-to tensorboard 或 train-config "report_to": ["tensorboard"]
W&B --report-to wandb --wandb-project ling-model --run-name my-run
两者 --report-to tensorboard wandb
关闭 --report-to none
pip install -e ".[monitor]"   # tensorboard + wandb
tensorboard --logdir outputs/ling-20m-mm/tb
# W&B: 先 wandb login,再 --report-to wandb

会打到 dashboard 的自定义指标(除 HF 自带 loss / learning_rate / grad_norm):

  • train/loss_*loss_textloss_image_flowloss_audio_flowloss_codec、总 loss
  • train/n_*:各 head 有效 token/slot 数
  • train/ratio_*_over_text:flow/codec 相对 text CE 的量级比(失衡会 stdout WARNING)
  • train/share_text_tokens / share_mm_tokens
  • batch/*:本 step 是否有 pixel/gen_pixel/audio、slot 数、bsz

Setup / Test

pip install -e ".[dev,perc,monitor]"   # perc=VGG-LPIPS;monitor=TB/W&B
PYTHONPATH=src python -m pytest
PYTHONPATH=src python scripts/verify_model.py

About

你的大模型

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages