video-promo/README.md

271 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AstrAI Promo — 动画渲染 & 视频制作指南
Manim 驱动的技术动画,用于 AstrAI 宣传视频。
目标时长:**2-3 分钟**
---
## 目录
1. [项目定位与核心卖点](#1-项目定位与核心卖点)
2. [技术架构速览](#2-技术架构速览)
3. [渲染指南](#3-渲染指南)
4. [场景清单](#4-场景清单)
5. [分镜脚本](#5-分镜脚本)
6. [旁白文案草稿](#6-旁白文案草稿)
7. [素材清单](#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. 渲染指南
依赖 conda 环境 `manim`
```bash
conda run -n manim python -m pip install manim
```
### 渲染全部(并行)
```bash
conda run -n manim python render_all.py # 1080p
conda run -n manim python render_all.py -ql # 480p draft
conda run -n manim python render_all.py -4k # 4K
```
### 渲染单个场景
```bash
conda run -n manim python -m manim transformer.py Transformer -qh
```
输出到 `output/videos/``.mp4` 可直接导入剪辑软件。
### 中文字体
所有 `Text` 对象创建前需设置:
```python
Text.set_default(font="Microsoft YaHei")
```
详细命令参考 `AGENTS.md`
---
## 4. 场景清单
| 文件 | Scene class | 内容 | 建议时长 |
|------|-------------|------|---------|
| `transformer.py` | `Transformer` | GQA 注意力机制 (Q/K/V→RoPE→Attention→O) + 规格卡 | ~35s |
| `continuous_batching.py` | `ContinuousBatching` | 4 阶段流水线 + 吞吐对比 (1.0x vs 3.4x) | ~30s |
| `paged_cache.py` | `PrefixCache` | 分页 KV 缓存:页表分配、按需扩容、回收 | ~30s |
| `architecture.py` | `Architecture` | 全栈架构HTTP API → Engine → Paged Cache → Transformer | ~25s |
| `cta.py` | `CTA` | 结尾卡片:"AstrAI — Single GPU, Open Source, 1B params" | ~3s |
---
## 5. 分镜脚本
总时长 **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 |
**视觉素材**`transformer.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 定版
---
## 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 | 需设计 |
| 终端录屏 | OBS 录制 AstrAI demo 脚本 |
| GitHub 页面 | 浏览器录屏 |
| Transformer 架构动画 | Manim 渲染 `transformer.py` |
| 连续批处理动画 | Manim 渲染 `continuous_batching.py` |
| 分页缓存动画 | Manim 渲染 `paged_cache.py` |
| 全栈架构动画 | Manim 渲染 `architecture.py` |
| 结尾卡片 | Manim 渲染 `cta.py` |
### 音频素材
| 素材 | 建议 |
|------|------|
| 旁白 | USB 麦克风录制,中文普通话 |
| 背景音乐 | Epidemic Sound / YouTube Audio Library 搜索 "technology ambient" |
| 音效 | 打字音效、转场 swoosh |
### 软件工具
| 用途 | 推荐工具 | 价格 |
|------|---------|------|
| 录屏 | OBS Studio | 免费 |
| 剪辑 | DaVinci Resolve | 免费 |
| 动画渲染 | Manimconda 环境 `manim` | 免费 |
| 音频处理 | Audacity | 免费 |
| 字幕 | DaVinci Resolve 内建 / Aegisub | 免费 |