LLMs之DeepSeek:Math-To-Manim的简介(包括DeepSeek R1-Zero的详解)、安装和使用方法、案例应用之详细攻略
目录
Math-To-Manim的简介
1、特点
2、一个空间推理测试—考察不同大型语言模型如何解释和可视化空间关系
3、DeepSeek R1-Zero的简介:处理更长的上下文窗口+改进注意力机制
(1)、核心思想:迁移学习+指令微调+长上下文神经架构
(2)、理论基础:基于Transformer架构、扩展上下文窗口(分布式位置编码+基于段的注意力机制)、指令微调(精心策划的提示语料数据)、语义压缩(编码器侧)
(3)、模型架构:参数量(6.7B)+词汇表(32k)+基于T5架构(32个头/36层)+位置编码(绝对位置编码+针对8k token的学习型分段位置编码)+优化交叉注意力机制+8K上下文+层堆叠策略(提高多GPU环境中的吞吐量)
(4)、部署细节:分片检查点+Accelerate集成+分段编码+并行交叉注意力+量化(4位/8位)
(5)、性能基准:与GPT-3.5接近
(6)、潜在限制(上下文有限+存在训练偏差+可解释性),未来发展(集成高级内存系统+整合flash attention+优化RAG)
Math-To-Manim的安装和使用方法
1、安装
克隆和设置
环境设置
安装依赖项
安装FFmpeg (根据操作系统选择合适的命令)
启动界面
渲染选项
2、开发技巧
Math-To-Manim的案例应用
1、动画示例
Benamou-Brenier-Wasserstein (BBW)
Electroweak Symmetry
Quantum Electrodynamics (QED)
Gale-Shapley Algorithm
Math-To-Manim的简介
2025年1月20日,Math-To-Manim项目利用DeepSeek AI模型,通过模型优化和训练,一键生成数学动画(使用Manim库)。该项目包含各种复杂数学概念的动画可视化示例,旨在自动绘制超越大多数人可视化能力的复杂数学和物理概念之间的联系,并以一键式动画呈现。
总而言之,Math-To-Manim是一个利用AI自动生成数学动画的创新项目,它结合了提示工程、模型微调和Manim库,为数学和物理概念的可视化提供了一种新的途径。 项目文档全面,代码示例丰富,方便用户学习和使用。
GitHub地址:GitHub - HarleyCoops/Math-To-Manim
1、特点
LaTeX锚定:这是基本的提示工程技术,使代码准确率提高了62%。
双流输出:同时生成动画代码和学习笔记。
错误恢复能力:通过模型自省自动更正了38%的Manim代码错误。
实时推理显示:聊天界面实时显示AI的推理过程,包括模型的思维链和最终答案。
LaTeX到Manim桥接:基于正则表达式的数学表达式清理。
动画验证:自动化的场景图分析预渲染。
文档引擎:Markdown/LaTeX双输出系统。
2、一个空间推理测试—考察不同大型语言模型如何解释和可视化空间关系
一个空间推理测试,旨在考察不同大型语言模型如何解释和可视化空间关系。测试的挑战是:将二维图像映射到旋转的三维空间中,其基础原理是“所有方程都是形状,所有形状都是方程”,没有任何其他上下文信息。测试中,DeepSeek和OpenAI Pro这两个模型都接受了这一挑战。它们的处理方法和结果揭示了其推理过程的有趣差异:
DeepSeek 的方法:DeepSeek 采取了一种循序渐进、分层构建的方法。
OpenAI Pro 的方法:OpenAI Pro 尝试以类似的系统性方式推理空间关系。
虽然两个模型都产生了有趣但技术上不正确的解释,但关键发现不在于它们的准确性,而在于它们的方法。DeepSeek 采取了分层构建的方法,而 OpenAI Pro 则尝试直接推理空间关系。
这个实验是更广泛研究的一部分,该研究致力于解决来自“人类的最后考试”(HLE)库中的数学和空间推理问题。 从中获得的关键见解是:提示工程的精细程度再次变得至关重要——当提供详细的上下文信息时,DeepSeek 特别是在其可视化能力方面展现出显著的改进。 这暗示了高质量提示在引导大型语言模型进行复杂空间推理中的关键作用。
3、DeepSeek R1-Zero的简介:处理更长的上下文窗口+改进注意力机制
DeepSeek R1-Zero是一个定制的、指令微调的LLM,旨在处理高级推理和知识补全任务。虽然它在概念上受到了谷歌T5框架的启发,但在架构上进行了大量修改,使其能够处理更长的上下文窗口、改进注意力机制,并在零样本和少样本范式中展现出强大的性能。其核心目标是提供一个单一的、通用的编码器-解码器模型,能够处理复杂阅读理解(最多8192个token)、基于场景的指令遵循(例如,“给定一组约束条件,制定一个简短的计划”)以及技术和编码任务(包括代码生成、转换和调试辅助)。虽然R1-Zero是T5的“后代”,但在注意力机制、上下文管理和参数初始化方面的修改使其与传统的T5实现有显著区别。
总而言之,DeepSeek R1-Zero是一个功能强大且具有创新性的LLM,但仍有改进空间。其长上下文处理能力、指令遵循能力和多位量化能力使其在处理复杂任务方面具有显著优势。 未来的研究方向将致力于解决其局限性,并进一步提升其性能和可解释性。
(1)、核心思想:迁移学习+指令微调+长上下文神经架构
DeepSeek R1-Zero的核心思想是通过结合迁移学习、指令微调和长上下文神经架构来构建一个能够处理各种复杂任务的通用大型语言模型。它试图在模型能力和效率之间取得平衡,通过改进的架构设计来提升模型在长文本处理和复杂推理任务上的性能。
(2)、理论基础:基于Transformer架构、扩展上下文窗口(分布式位置编码+基于段的注意力机制)、指令微调(精心策划的提示语料数据)、语义压缩(编码器侧)
DeepSeek R1-Zero的理论基础建立在Transformer模型的“注意力机制”之上,并在此基础上进行了扩展和改进:
>> 扩展的上下文窗口:通过采用分布式位置编码和基于段的注意力机制,R1-Zero能够容忍长达8192个token的序列。在某些层中利用分块局部注意力来减轻内存使用的二次方缩放问题。这超越了标准Transformer模型的上下文长度限制,使其能够处理更长的文本序列,从而更好地理解上下文信息。
>> 指令微调:类似于FLAN-T5或InstructGPT等框架,R1-Zero接受了精心策划的提示(指令、问答、对话)的训练,以提高零样本和少样本性能。这种方法有助于模型产生更稳定、更上下文相关的答案,并减少“幻觉”事件。指令微调使得模型能够更好地理解和执行各种指令,从而提高其在不同任务上的泛化能力。
>> 语义压缩:编码器可以将文本片段压缩成“语义槽”,从而在解码器阶段实现更有效的交叉注意力。这在理论上是基于流形假设的,其中文本输入可以被视为位于低维流形上,因此适合压缩表示。从认知科学的角度来看,R1-Zero力求模仿分层知识同化方法,平衡短期“工作记忆”(序列token)和长期“知识表示”(模型参数)。语义压缩提高了模型的效率,减少了计算和内存的消耗。
·
(3)、模型架构:参数量(6.7B)+词汇表(32k)+基于T5架构(32个头/36层)+位置编码(绝对位置编码+针对8k token的学习型分段位置编码)+优化交叉注意力机制+8K上下文+层堆叠策略(提高多GPU环境中的吞吐量)
DeepSeek R1-Zero的架构基于修改后的T5架构(自定义配置名为deepseek_v3),主要修改如下:
>> 参数数量:约67亿个参数。
>> 编码器-解码器结构:保持了T5的文本到文本方法,但在交叉注意力块中使用了专门的门控和部分重新排序。
>> 上下文窗口:8192个token(比许多标准T5模型扩展了4倍)。
>> 层堆叠:修改允许对注意力头进行动态调度,从而在多GPU环境中提高吞吐量。
更详细的规格如下:
特性 | 说明 |
架构类型 | 修改后的T5 (自定义配置 deepseek_v3) |
注意力头数量 | 32个头(在较深的层中) |
层数 | 36个编码器块,36个解码器块 |
词汇量 | 32k个token (基于SentencePiece) |
位置编码 | 绝对位置编码 + 针对8k token的学习型分段位置编码 |
训练范式 | 指令微调 + 附加领域任务 |
精度 | FP32, FP16, 4位,8位量化 (通过BnB) |
(4)、部署细节:分片检查点+Accelerate集成+分段编码+并行交叉注意力+量化(4位/8位)
>> 分片检查点:模型被分成多个分片;每个分片在下载后都会被验证。大型分片可以被内存映射,因此系统需求还包括磁盘I/O开销。
>> Accelerate集成:通过利用Accelerate,可以将模型分片分布在多个GPU上,或者如果GPU内存不足,则执行CPU卸载。
>> 旋转和分段编码:在较长的序列长度下,标准的绝对位置可能会降低性能。R1-Zero的混合方法(受T5、LongT5和RoFormer的启发)有助于即使在8k个token时也能保持稳定的梯度。
>> 并行交叉注意力:解码器在某些层中采用专门的并行交叉注意力机制,这可以减少多GPU设置中的开销。
>> 量化:支持4位和8位量化以减少内存占用。4位量化可将VRAM使用量降至约8GB,但可能导致精度略微下降;8位量化可将VRAM使用量降至约14GB,精度损失更小。
(5)、性能基准:与GPT-3.5接近
DeepSeek R1-Zero在标准生成基准测试中的性能通常与GPT-3.5接近:
>> 推理延迟:4位量化:每个token约100-200毫秒(取决于GPU);FP16:每个token约200-400毫秒;FP32:每个token约400-800毫秒。
>> 质量指标:
BLEU和ROUGE:在摘要任务(CNN/DailyMail)上,R1-Zero的得分比GPT-3.5低约1-2分;
开放域问答:在NaturalQuestions上,当正确指导时,R1-Zero与强大的基线(例如T5-XXL)非常接近。
需要注意的是,硬件设置和并行化策略会显著影响这些基准测试结果。
(6)、潜在限制(上下文有限+存在训练偏差+可解释性),未来发展(集成高级内存系统+整合flash attention+优化RAG)
尽管R1-Zero具有诸多优势,但仍然存在一些局限性:
>> token上下文限制:8192个token虽然很高,但在某些极端情况下(例如,在大型文档中进行全文搜索),可能需要桥接或分块处理。
>> 训练偏差:虽然指令微调减少了幻觉,但领域差距仍然存在。对于高度专业化或新兴的知识,模型可能会产生不确定或过时的信息。
>> 可解释性:像所有基于Transformer的LLM一样,R1-Zero的功能如同“黑盒”。高级的可解释性工具仍然是一个活跃的研究领域。
未来的发展方向包括:
>> 集成高级内存系统以处理超过8k个token的提示。
>> 整合flash attention以进一步提高速度。
>> 研究检索增强生成模块以减少对过时知识的依赖。
Math-To-Manim的安装和使用方法
1、安装
克隆和设置
git clone https://github.com/HarleyCoops/Math-To-Manim
cd Math-To-Manim
环境设置
创建.env文件并配置DeepSeek API密钥:
echo "DEEPSEEK_API_KEY=your_key_here" > .env
安装依赖项
pip install -r requirements.txt # 或者使用 pip install -r requirements.txt --no-cache-dir 加速安装
安装FFmpeg (根据操作系统选择合适的命令)
Windows:下载并安装FFmpeg,并将其添加到系统PATH环境变量中,或者使用 choco install ffmpeg。
Linux:sudo apt-get install ffmpeg
macOS:brew install ffmpeg
启动界面
python app.py
渲染选项
质量设置:-ql (480p), -qm (720p), -qh (1080p), -qk (4K)
附加标志:-p (预览动画), -f (显示输出文件), --format gif (导出为GIF)
输出位置:media/videos/[SceneName]/[quality]/[SceneName].[format]
自定义输出目录:使用 manim cfg write -l
2、开发技巧
快速开发:python -m manim -pql YourScene.py YourSceneName
最终渲染:python -m manim -qh YourScene.py YourSceneName
调试辅助:在.env文件中设置LOG_LEVEL=DEBUG以获取详细的生成日志
Math-To-Manim的案例应用
1、动画示例
项目还包含一个空间推理测试,比较了DeepSeek和OpenAI Pro模型在将2D图像映射到旋转3D空间方面的能力。
Benamou-Brenier-Wasserstein (BBW)
该动画演示了最优传输的概念,包含详细的文档(Benamou-Brenier-Wasserstein.md 和 Benamou-Brenier-Wasserstein.tex),以及预渲染的场景指南PDF。渲染命令:python -m manim -qh CosmicProbabilityScene.py CosmicProbabilityScene
Electroweak Symmetry
该动画演示了电弱对称性。文档:ElectroweakMeaning.md。渲染命令:python -m manim -qh ElectroweakSymmetryScene.py ElectroweakSymmetryScene
Quantum Electrodynamics (QED)
该动画演示了量子电动力学。源文件:QED.py, Verbose_QED.py。渲染命令:python -m manim -qh QED.py QEDScene
Gale-Shapley Algorithm
该动画演示了Gale-Shapley算法(稳定匹配算法)。文档位于/docs目录。渲染命令:python -m manim -qh gale-shaply.py GaleShapleyVisualization