video-promo/PROMO_GUIDE.md

15 KiB
Raw Blame History

AstrAI 宣传视频制作指南

本文档为制作 AstrAI 宣传视频提供完整的技术参考、分镜建议和录制脚本。 目标时长:2-3 分钟


目录

  1. 项目定位与核心卖点
  2. 技术架构速览
  3. 分镜脚本
  4. 演示录制指南
  5. 动画场景说明
  6. 旁白文案草稿
  7. 素材清单

1. 项目定位与核心卖点

一句话定位:

一个能在单张消费级 GPU 上训练和推理的 1B 参数中英双语语言模型框架。

核心卖点(视频中需突出):

卖点 说明 视觉表达
单卡可跑 1B 参数RTX 3090/4090 即可运行 巨大服务器集群 vs 单张显卡对比
连续批处理 动态合并请求,吞吐量 3x+ 任务流经 Cleanup→Refill→Prefill→Decode 动画
分页 KV 缓存 固定大小页表 + O(1) 分配,按需扩容 页表分配与写入动画
OpenAI 兼容 API 一行代码切换 curl 命令对比
流式输出 逐 token 返回,低首延迟 终端逐字喷出效果
全过程开源 训练+推理+权重全部开源 GitHub 页面展示

2. 技术架构速览

整体架构

┌──────────────────────────────────────────────────┐
│  FastAPI Server  (OpenAI-Compatible API)         │
├──────────────────────────────────────────────────┤
│  InferenceEngine  (Streaming + Async + Batch)    │
├──────────────────────────────────────────────────┤
│  Continuous Batching Scheduler                   │
│  ┌────────┐  ┌──────┐  ┌────────┐  ┌────────┐   │
│  │Cleanup │→ │Refill│→ │Prefill │→ │ Decode │   │
│  └────────┘  └──────┘  └────────┘  └────────┘   │
├──────────────────────────────────────────────────┤
│  Paged KV Cache  (Page Table  +  Page Pool)      │
├──────────────────────────────────────────────────┤
│  Transformer  (24层 GQA, RoPE, SwiGLU)           │
└──────────────────────────────────────────────────┘

关键技术指标

指标
参数量 ~1.0B
词表大小 100,000中英 BPE
层数 24
注意力头 24 Q-heads / 4 KV-headsGQA
最大长度 2048 tokens
精度 bfloat16
最低显存 ~6GB推理/~12GB训练

3. 分镜脚本

总时长 2:30,分为 6 个段落。

Segment 1Hook + 问题陈述0:00 - 0:20

镜头 画面 旁白 时长
1.1 黑屏,逐字打出"大语言模型很强大" "大语言模型很强大——" 3s
1.2 切到数据中心照片 / 巨大 GPU 集群 "——但跑起来需要几十张 GPU普通人根本碰不到。" 5s
1.3 画面分屏:左边集群,右边一张 RTX 4090 "但如果我告诉你,只要一张显卡就够了呢?" 5s
1.4 Logo 出现:AstrAI,下方副标题 "1B 参数单卡推理框架" "AstrAI——单卡跑大模型。" 7s

视觉素材数据中心图片可免版权下载、RTX 4090 产品图、Logo 动画


Segment 2模型架构速览0:20 - 0:45

镜头 画面 旁白 时长
2.1 Transformer 架构图逐层展开embed → 24层 decoder → norm → head "1B 参数24 层 Transformer100k 词表的中英 BPE 分词器。" 8s
2.2 高亮 GQA24个 Q head 映射到 4个 KV head "GQA 分组查询注意力——24 个查询头只对应 4 个 KV 头KV 缓存直接减少 83%。" 10s
2.3 RoPE 旋转变换可视化 "RoPE 旋转位置编码,支持动态长度外推。" 5s
2.4 fade 到模型 cardvocab=100k, dim=1536, layers=24, heads=24, kv_heads=4 静默 2s

视觉素材architecture.py 动画、模型参数 card


Segment 3连续批处理0:45 - 1:20

镜头 画面 旁白 时长
3.1 3 个请求同时到达服务器 "当多个请求同时到达时——" 3s
3.2 静态批处理对比最长补齐3个请求串行 → 总耗时 max_len × 3 "传统做法是静态批处理把请求补齐到相同长度串行处理GPU 利用率低下。" 8s
3.3 连续批处理动画:任务流入 Waiting Queue → Cleanup → Refill → Prefill → Decode "AstrAI 采用连续批处理任务动态进出GPU 每一刻都在满负荷运转。" 10s
3.4 放大 Decode 阶段:同一位置的任务合并成一批 "特别地,只有处于相同 KV 缓存位置的任务才一起解码,从根本上避免了 RoPE 位置错乱的问题。" 8s
3.5 吞吐对比柱状图Static Batch vs Continuous Batching (3x+) "实测吞吐量提升 3 倍以上。" 6s

视觉素材continuous_batching.py 动画、对比图表


Segment 4分页 KV 缓存1:20 - 1:50

镜头 画面 旁白 时长
4.1 展示 KV 缓存是一个固定大小的张量,被划分为多个相同大小的 page "KV 缓存不再按请求预分配——而是划分为固定大小的页。" 5s
4.2 请求 A 到来,通过页表分配 2 个物理页,写入数据 "请求到达时,通过页表分配物理页,按需写入。" 7s
4.3 请求 B 到来,分配新页,展示页表将逻辑位置映射到不同物理页 "页表机制让逻辑位置和物理存储解耦——不同请求的页可以分散排列。" 8s
4.4 Decode 阶段,请求继续生成 token展示按需分配新页_maybe_alloc_page "生成过程中如果当前页写满,自动追加新页——按需扩容,不浪费显存。" 7s
4.5 请求结束时展示页面回收bitmask 置位) "请求结束后,页面通过 O(1) 位掩码回收,即刻复用。" 3s

视觉素材paged_cache.py 动画、页表分配示意


Segment 5Demo 演示1:50 - 2:15

镜头 画面 旁白 时长
5.1 侧录终端:启动 stream_chat.py逐行输出对话 "来实际看看效果。" 10s
5.2 多轮对话:中文问答,逐 token 喷出 静默 + 打字音效 8s
5.3 切到 HTTP 模式:服务端 + curl 请求,流式返回 "也提供 OpenAI 兼容的 HTTP API一行 curl 就能调用。" 7s

视觉素材终端录屏OBS 录制)


Segment 6收尾 + CTA2:15 - 2:30

镜头 画面 旁白 时长
6.1 全栈流程回顾(缩略架构图) "训练用 SEQ → SFT → DPO/GRPO推理用连续批处理——" 5s
6.2 GitHub 页面 + Star 引导 "——全部开源。点个 Star一起让大模型更普惠。" 7s
6.3 Logo + URL + "Open Source • Single GPU" 静默 3s

视觉素材GitHub 页面录屏、Logo 定版


4. 演示录制指南

4.1 准备工作

# 1. 安装依赖
pip install -e ".[dev]"

# 2. 下载模型(约 7GB
python scripts/demo/download.py

# 3. 验证模型加载
python scripts/demo/generate_ar.py

4.2 录制场景 A交互式对话

# 终端 1启动交互式对话
python scripts/demo/stream_chat.py

# 预期交互
>> 你好?
AstrAI: 你好!有什么我可以帮你的吗?
>> 请用中文介绍一下你自己
AstrAI: ...(逐 token 输出)
>> 编一个关于人工智能的短故事
AstrAI: ...(逐 token 输出)

录制重点

  • 逐 token 流式输出效果(用 OBS 录制终端窗口)
  • 多轮对话的记忆能力(跨轮上下文保持)
  • 打字音效叠加

4.3 录制场景 BHTTP 服务 + 并发

# 终端 1启动服务器
python -m scripts.tools.server --port 8000 --device cuda

# 终端 2发送请求非流式
curl -X POST http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"messages":[{"role":"user","content":"Hello!"}],"stream":false}'

# 终端 3流式请求
curl -X POST http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"messages":[{"role":"user","content":"Write a poem"}],"stream":true}'

# 终端 4并发压测用 scripts/demo/generate_batch.py
python scripts/demo/generate_batch.py

录制重点

  • 同时多个 curl 请求展示并发处理
  • 服务端日志显示批处理合并
  • /stats 端点展示实时统计

4.4 录制规格

参数 建议
分辨率 1920×1080
帧率 30fps
终端 Windows Terminal 或 iTerm2深色主题
字号 16-18px等宽字体JetBrains Mono / Cascadia Code
录屏工具 OBS Studio免费
音频 旁白用 USB 麦克风,音效后期叠加

5. 动画场景说明

位于 promo/ 目录,使用 Manim 引擎。

安装 Manim

# conda 环境内安装
pip install manim

# 验证
python -c "import manim; print(manim.__version__)"

渲染命令

# 单独渲染一个场景
manim -qh promo/continuous_batching.py ContinuousBatching

# 全部场景渲染
python promo/render_all.py

# 快速草稿480p适合调试
manim -ql promo/continuous_batching.py ContinuousBatching

输出文件为 promo/output/videos/ 下的 .mp4 文件,可直接导入剪辑软件。

场景清单

文件 导出场景名 内容 建议时长
transformer.py Transformer 模型架构Embed → GQA → SwiGLU → ×24 → LM Head ~35s
continuous_batching.py ContinuousBatching 4 阶段流水线动画 + 吞吐对比 ~30s
paged_cache.py PrefixCache 分页 KV 缓存:页表分配、按需扩容、回收 ~30s
architecture.py Architecture 全栈架构逐层展开 + 数据流 ~25s

自定义动画

如需修改动画内容:

  • Manim 语法参考:https://docs.manim.community/
  • 所有动画元素(颜色、位置、速度)在场景类中通过参数调整
  • 中文字体渲染需额外配置:
# 在场景类开头添加
Text.set_default(font="Microsoft YaHei")

6. 旁白文案草稿

中文版(完整 2:30

[00:00] 大语言模型很强大——
[00:03] 但跑起来需要几十张 GPU普通人根本碰不到。
[00:08] 但如果我告诉你,只要一张显卡就够了呢?
[00:13] AstrAI——单卡跑大模型。

[00:20] 1B 参数24 层 Transformer100k 词表的中英 BPE 分词器。
[00:28] GQA 分组查询注意力——24 个查询头只对应 4 个 KV 头KV 缓存直接减少 83%。
[00:38] RoPE 旋转位置编码,支持动态长度外推。

[00:45] 当多个请求同时到达时——
[00:48] 传统做法是静态批处理把请求补齐到相同长度串行处理GPU 利用率低下。
[00:56] AstrAI 采用连续批处理任务动态进出GPU 每一刻都在满负荷运转。
[01:06] 只有处于相同 KV 缓存位置的任务才一起解码,从根本上避免 RoPE 位置错乱。
[01:14] 实测吞吐量提升 3 倍以上。

[01:20] 传统 KV 缓存预分配整段显存,浪费严重。
[01:25] AstrAI 采用分页 KV 缓存——固定大小的页,通过页表间接寻址,按需分配。
[01:33] 生成过程中页写满了自动追加,请求结束后 O(1) 回收。
[01:40] 显存利用率大幅提升,支持更多并发请求。

[01:50] 来实际看看效果。
[01:52] (现场演示部分,自由发挥)

[02:15] 训练到推理,全流程开源,点个 Star一起让大模型更普惠。
[02:25] AstrAI — Open Source, Single GPU.

7. 素材清单

视频素材

素材 来源 状态
数据中心 / GPU 集群图片 Pexels / Unsplash 免版权 需下载
RTX 4090 产品图 NVIDIA 官网 / 实物拍摄 需准备
AstrAI Logo assets/images/logo.png 已有
终端录屏(对话) OBS 录制 scripts/demo/stream_chat.py 需录制
终端录屏HTTP OBS 录制 curl + server 需录制
终端录屏(并发) OBS 录制 generate_batch.py 需录制
GitHub 页面 浏览器录屏 需录制
Transformer 架构动画 Manim 渲染 transformer.py 已渲染
架构动画 Manim 渲染 architecture.py 已渲染
连续批处理动画 Manim 渲染 continuous_batching.py 已渲染
分页缓存动画 Manim 渲染 paged_cache.py 需重新渲染

音频素材

素材 建议
旁白 USB 麦克风录制,男声或女声,中文普通话
背景音乐 Epidemic Sound / YouTube Audio Library 搜索 "technology ambient"
音效 打字音效terminal keystrokes、转场 swoosh、whoosh

软件工具

用途 推荐工具 价格
录屏 OBS Studio 免费
剪辑 DaVinci Resolve 免费
动画渲染 Manim (pip install manim) 免费
音频处理 Audacity 免费
字幕 DaVinci Resolve 内建 / Aegisub 免费

附录:关键文件索引

文件路径 说明
README.md 项目主页 README含快速开始
assets/docs/introduction.md 模型架构深度介绍
assets/docs/design.md 设计文档 + UML 类图
astrai/inference/scheduler.py 连续批处理调度器核心代码
astrai/inference/engine.py 推理引擎统一接口
astrai/inference/server.py FastAPI 服务器
astrai/model/transformer.py Transformer 模型
astrai/model/module.py GQA、MLA、MLP 等模块
scripts/demo/stream_chat.py 交互式对话演示
scripts/demo/generate_batch.py 批量生成演示
scripts/tools/server.py HTTP 服务启动脚本
scripts/tools/benchmark.py 性能基准测试
scripts/promo/README.md 动画渲染说明(已移至 promo/
promo/render_all.py 一键渲染所有动画
promo/continuous_batching.py 连续批处理 Manim 场景
promo/paged_cache.py 分页 KV 缓存 Manim 场景
promo/architecture.py 架构总览 Manim 场景
params/config.json 模型配置