Math-to-Manim把严肃的数学和物理提示词变成 Manim 讲解视频

这个项目很不错,很多线性代数和几何的知识用图形来变现出来,就变得简单易懂了 必须来试试 clone代码 git clone https://github.com/HarleyCoops/Math-to-Manim-CH 安装的话,不要看文档,代码比文档更直白,用uv来管理python cd Math-to-Manim-CH uv sync 然后测一把 uv run math-to-manim generate "Explain why derivatives are slopes" --deterministic --no-render 没问题安装渲染的其它组件 apt install -y ffmpeg dvisvgm texlive-latex-base texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended apt install -y pkg-config libcairo2-dev libpango1.0-dev libpangocairo-1.0-0 uv pip install -e ".[dev,render]" 一切就绪,然后需要配置好codex的cli,需要用到它的推理 验证一下GPT2模型中的 RoPE 旋转编码原理 uv run math-to-manim generate "Explain RoPE Positional Encoding in GPT2 model" --codegen-provider codex-cli 上面可以看到生成了MP4视频,下载下来看看: 可以看到还可以,但是实际有偏差,因为RoPE是捉对厮杀,快慢时钟,但是还可以了,配上更详细的Prompt提示词,应该是可以实现。

2026年08月13日 · 1 分钟 · 64 字 · 八戒

一种跳过jumpserver的方法-psc

这是一篇补记的文章,防止自己给忘了 jumpserver跳板机是常备的需求,那怎么跳过它的审计呢? 有办法,psc , https://github.com/stealth/psc 它的核心思路是: 在现有的 shell 会话之上,再铺一层端到端加密的协议,数据全部用 Base64 编码传输(所以看起来是乱码),从而规避跳板机/堡垒机的会话审计和字符过滤。 数据流向示意 text 本地机器 远程机器 ┌─────────────┐ ┌─────────────┐ │ 你的程序 │ │ 目标服务 │ │ (ssh/curl等)│ │ (22/80等) │ └──────┬──────┘ └──────▲──────┘ │ 连接本地端口 │ ▼ │ ┌─────────────┐ ┌───────┴───────┐ │ pscl │ ◄── Base64+加密 ──► │ pscr │ │ (本地进程) │ (通过shell) │ (远程进程) │ └──────┬──────┘ └───────▲───────┘ │ │ │ 标准输入/输出 │ 标准输入/输出 ▼ │ ┌─────────────┐ ┌───────┴───────┐ │ 本地pty │ ◄── SSH/UART等 ──► │ 远程shell │ └─────────────┘ └───────────────┘ 1. 基本组件 程序 运行位置 作用 pscl 本地(攻击机) 等待远程会话,设置本地监听端口,处理加密与转发 pscr 远程(目标/跳板机 shell 里) 与本地建立加密握手,处理远程侧的连接 2. 编译 Bash ...

2026年08月11日 · 2 分钟 · 221 字 · 八戒

从零训练中文 GPT-2:通俗教程与项目复盘

之前翻译了一篇GPT2的文章:如何训练你的 GPT https://github.com/zhangrr/how-to-train-your-gpt 对分词、嵌入、位置编码、QKV、多头注意力、自我注意力、transformer块,前馈理解了一部分后; 最好的办法还是去实践、实践、实践,然后再不断的实践! 从零训练中文 GPT-2:通俗教程与项目复盘 项目路径:/workspace/gpt2 文档更新:2026-08-08 目标读者:想弄懂「分词之后怎么训 GPT-2、改了哪些参数、每个模型能干什么」的人 注意:tokenizer的过程需要大量内存,32G是不够的,本文是基于wikimedia/wikipedia 20231101.zhs数据集进行训练的 本文既是实验记录,也是入门教程。建议按目录顺序阅读:先建立直觉,再对照参数表与命令复现。 目录 用一句话理解整条流水线 环境与依赖 阶段 0~3:数据与分词器(训练前奏) 阶段 4 详解:从分词器到可训练的 GPT-2(重点) 本项目实际跑过的全部实验(A~F) 重点对比:50000 步 → 再训 150000 步改了什么 为什么新增 QA 语料?从哪来?怎么用? 每个模型目录适用于什么场景 指标怎么读、生成时怎么调 踩坑与经验 端到端复现命令 变更日志 1. 用一句话理解整条流水线 原始中文维基 → 清洗成纯文本 → 训练分词器(把文字变成数字 ID) → 搭一个「只会猜下一个词」的 GPT-2(随机初始化) → 用大量文本做预训练(CLM:因果语言建模) → 发现:会写中文,但不保证答对常识 → 用问答对做 SFT(监督微调) → 再小幅续训语言流畅度(并混入问答,防止忘掉事实) 1.1 两个容易混的概念 概念 通俗解释 本项目里对应 预训练(Pretrain / CLM) 让模型读海量文章,学会「下一个字/词大概是什么」 04.train_gpt2.py 监督微调(SFT) 拿「问题→标准答案」专门教它怎么答 06.sft_qa.py 重要结论: ...

2026年08月10日 · 10 分钟 · 1932 字 · 八戒

pi的安装配置

Claude code和codex以及grok的cli都试过了,还有个更加精简的pi 它是一个运行在 CLI 里的 Coding Agent,它的设计逻辑就是四个字 — 极简内核。 下面就说说pi的安装和使用: 一、安装 # 基础准备,高效工具得装好 apt install fd-find ripgrep npm install -g --ignore-scripts @earendil-works/pi-coding-agent 二、使用 # 首先进入一次pi,让它生成 ~/.pi的目录 pi # 然后退出 ctrl+d # 显示中文 cat > ~/.pi/agent/AGENTS.md <<EOF #### 语言 / Language 始终用中文进行内部思考(thinking 块)和最终回复。 即使用户粘贴了英文的终端输出、报错或代码,内部推理和回复仍应使用中文;只有代码、命令、标识符、文件路径等保持原文。 如果用户切换语言,则跟随用户的当前语言;默认且优先使用中文。 EOF # 接入openai兼容的模型 cat > ~/.pi/agent/models.json <<EOF { "providers": { "deepseek": { "baseUrl": "https://tokenrhythm.studio/v1", "api": "openai-completions", "apiKey": "sk_xxxxxxxx", "authHeader": true, "compat": { "supportsStore": false, "supportsReasoningEffort": true }, "models": [ { "id": "deepseek-v4-flash-0731", "name": "deepseek-v4-flash-0731", "reasoning": true, "input": ["text"], "contextWindow": 1000000, "maxTokens": 65536, "thinkingLevelMap": { "off": null, "low": "high", "medium": "high", "high": "high", "xhigh": "max", "max": "max" } } ] } } } EOF 三、使用 ...

2026年08月07日 · 1 分钟 · 110 字 · 八戒

S3桶的迁移

最近S3的桶要从腾讯云的HK区搬迁到自建的S3去 之前从AWS以及COS的广州zone搬过一次,以为会简单,实际很慢 首先装mc,这是个神器 wget https://dl.min.io/client/mc/release/linux-amd64/archive/mc.RELEASE.2025-08-13T08-35-41Z 改名拷贝到 /usr/local/bin/mc mc alias set mycos https://cos.ap-hongkong.myqcloud.com accessKey secretKey ms ls mycos 第一次肯定是全量copy,注意结尾一定要有/ mc cp --recursive mycos/new-0123456789/ /data/new/ 然后就是增量同步了 mc mirror mycos/new-0123456789/ /data/new/ 那还可以用腾讯自己的软件coscli wget https://github.com/tencentyun/coscli/releases/download/v1.0.8/coscli-v1.0.8-linux-amd64 #改名放到/usr/local/bin # 直接开启增量同步模式,第一次也肯定是全量 /usr/local/bin/coscli sync --thread-num 4 -r cos://new-0123456789/ /data/tmp/

2026年07月29日 · 1 分钟 · 41 字 · 八戒

Nodejs Python Go在Linux下的指定安装

为什么会有这么奇怪的事,是因为新的GPU机器是一个runpod 持久化卷是网络的,但是pod一重启,系统便被洗的干干净净,重新出生了,那难道每次重启都重新安装nodejs python go ? 那可太烦了,我们把这些固定软件指定安装到持久化卷上,重启后只要引入资源文件,就恢复原样,那就完事大吉了 一、nodejs curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | NVM_DIR=/workspace/nvm bash export NVM_DIR="/workspace/nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" [ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" 这样nvm就装好了,然后装node nvm list nvm ls-remote nvm install 24 # 顺手装个codex npm i -g @openai/codex 二、python curl -LsSf https://astral.sh/uv/install.sh | UV_INSTALL_DIR=/workspace/uv sh source /workspace/uv/env 这样uv就装好了,然后装python uv python list # 建议用到时再用venv初始化python uv venv --python 3.12 三、go wget https://go.dev/dl/go1.25.11.linux-amd64.tar.gz tar zxvf go1.25.11.linux-amd64.tar.gz mv go /workspace/go export GOROOT=/workspace/go export PATH=$GOROOT/bin:$PATH 四、整合bashrc # 类似screen的软件 https://github.com/coder/boo/releases/download/v0.6.4/boo-x86_64-linux.tar.gz # smart cd的软件 https://github.com/ajeetdsouza/zoxide/releases/download/v0.10.0/zoxide-0.10.0-x86_64-unknown-linux-musl.tar.gz # 下载后是boo和zoxide,放到/workspace/bin目录下 /workspace/bin/boo /workspace/bin/zoxide 整合/workspace/bashrc ...

2026年07月29日 · 1 分钟 · 121 字 · 八戒

AI中转站的运营成本分析

一直对现在市场上的各种AI中转站的成本非常感兴趣,我们来仔细研究一下: 一、GPT中转的成本 那通常可以设置 1 美金 = 多少平台币 大部分都是 1:1 1 美金 = 1 人民币 然后就是用户使用时的倍率分组,就是用来计算真实加个的分组 比如输入 5 元,给你倍率 0.1,那么实际就是: 5 * 0.1 = 0.5 元 注意前面,1 人民币 = 1 美元的时候,实际已经做了 1/7 的折扣 这里这个倍率,又做了进一步的折扣,那要疯了,这么折,怎么赚钱?! 二、Pro订阅号的额度计算 我们直接从Pro号来计算,可以大概知道每个 20x Pro 的号,一周满额度一般是 1600+刀。 之前 Pro 的额度约为 2500+。OpenAI 后来调整降低了不少额度。 现在这个额度,乘以 4 周一个月,就是中转正常获取的额度: 1600 * 4 = 6400 在过程中,一般会有 1-2 次重置,也就是额度差不多在: 1600 * 6 = 9600 也就是大概 10000 刀。 整体来看,一个号大概能跑出: 6000 - 10000 刀 但是只需要 200 美元,1400元左右即可撬动。我们需要忘记美元,记牢1400元是我们的成本。 ...

2026年07月24日 · 1 分钟 · 192 字 · 八戒

大语言模型(LLM)微调(Fine-tuning)之二

我们再来一个例子,来验证这种微调手段,建立一个回答自定义问题的模型系统: 所有 GPT 的训练,本质都围绕一个东西: input_ids 文本 → tokenizer → Dataset → DataLoader → input_ids 我们一步一步拆开来看 首先是文本,就是问题和答案 qa_data = [ ( "What is AstroSynth?", "AstroSynth is an innovative program designed to synthesize oils from celestial materials." ), ( "How does AstroSynth work?", "The AstroSynth program utilizes advanced technologies to extract and synthesize oils from meteorites." ) ] 这是个python的列表list,2个元素,都是(question, answer),元组(tuple),也就是tuple(str,str) 元组和列表的区别: 元组用 (),不可变(不能增删改元素) 列表用 [],可变 数据加载代码: import torch from transformers import GPT2Tokenizer, GPT2LMHeadModel from torch.utils.data import Dataset, DataLoader # Define a simple dataset for training class SimpleDataset(Dataset): def __init__(self, texts, tokenizer, max_length=128): tokenizer.pad_token = tokenizer.eos_token # Set padding token to EOS self.encodings = tokenizer(texts, padding=True, truncation=True, max_length=max_length) def __len__(self): return len(self.encodings["input_ids"]) def __getitem__(self, idx): return {k: torch.tensor(v[idx]) for k, v in self.encodings.items()} qa_data = [ ("What is AstroSynth?", "AstroSynth is an innovative program designed to synthesize oils from celestial materials."), ("How does AstroSynth work?", "The AstroSynth program utilizes advanced technologies to extract and synthesize oils from meteorites."), # Add more Q&A pairs... ] dataset = SimpleDataset(qa_data, tokenizer) dataloader = DataLoader(dataset, batch_size=2, shuffle=True) 看代码,dataset ...

2026年07月08日 · 5 分钟 · 1044 字 · 八戒

大语言模型(LLM)微调(Fine-tuning)流水线

其实我们之前有用这种方法,就是我们训出来的翻译小模型不懂latte这个词,也不懂点咖啡。so,我们准备了一批语料来强训它,让它记住。 大语言模型(LLM)微调(Fine-tuning)流水线: 利用 Hugging Face 的生态(transformers 和 datasets),走完了从“准备数据 -> 处理数据 -> 配置参数 -> 启动训练 -> 保存模型”的全过程。它的核心目的是:拿一个已经有基础能力的预训练模型(GPT-2),用大量的中文维基百科数据让它继续学习(Next-Token Prediction),从而掌握(或增强)生成连贯中文文本的能力。 load_dataset load_dataset 是 Hugging Face datasets 库中最核心、也是使用频率最高的“魔法函数”。你可以把它理解为大模型时代的数据集版 git clone 或 pip install dataset = load_dataset("wikimedia/wikipedia", "20231101.zh", split="train", cache_dir="./hf_cache") 一、 它是怎么从 huggingface.co 拉取数据的? 当你执行 load_dataset("wikimedia/wikipedia", ...) 时,底层其实经历了一场精密的协同: API 寻址:函数首先会向 Hugging Face Hub 的 API 发送请求,查找名为 wikimedia/wikipedia 的仓库。 下载脚本或元数据:它不仅会查找数据文件,还会寻找仓库里的 dataset_script.py(数据集处理脚本)或者直接寻找 Parquet / JSONL 格式的底层数据文件。 本地缓存(核心机制):下载的数据会存入你指定的 cache_dir(如果没有指定,默认存放在 ~/.cache/huggingface/datasets/)。 Arrow 内存映射(黑科技):Hugging Face 极其聪明地使用了 Apache Arrow 格式来将数据序列化到本地硬盘,并通过内存映射(Memory-Mapping)技术读取。 这意味着什么? 即使你加载了一个 100GB 的维基百科数据集,你的电脑内存也不会爆炸!因为它不会把数据全塞进 RAM 里,而是放在硬盘上,用到哪一行才读取哪一行,速度极快。 二、 核心参数全解析 以代码为例: ...

2026年07月07日 · 4 分钟 · 706 字 · 八戒

使用 Transformers.js 和 Sentence Embeddings 句子嵌入构建语义搜索

我们之前学习了手撕大模型2 , 那学以致用,来运用一下 在本文中,我们将学习句子嵌入(Sentence Embeddings)的工作原理,以及如何使用 Transformers.js 构建一个完全在客户端(浏览器端)运行的语义搜索引擎。无需服务器、无需 API 密钥,也不需要任何后端基础设施。 我们将涵盖的主题包括: 句子嵌入和余弦相似度如何构成语义搜索的基础。 如何使用 Transformers.js 的特征提取管道(Feature-extraction Pipeline)来生成和缓存嵌入,包括批处理和 Web Worker 线程卸载。 如何构建一个通用的 SemanticSearch 类,并实现索引在页面刷新后的持久化。 引言 你以前可能写过这样的“Bug”:用户在搜索框中输入“affordable laptop(便宜的笔记本)”,结果返回零匹配。但你分明知道数据库里有几十篇关于笔记本的文章,只不过它们的标题叫“budget notebook(经济型便携本)”。 单词完全不同,但意思一模一样。传统的re关键字搜索将它们视为无关的字符串,这就是关键字匹配的核心缺陷:它比较的是字符,而不是概念和语义。 语义搜索通过比较“含义”解决了这个问题。借助 Transformers.js,你可以在浏览器中独立实现它。 什么是句子嵌入? Transformer 模型无法直接处理原始文本。在进行任何计算之前,句子必须变成数字。嵌入(Embeddings) 就是这种转换的结果:用一个被称为向量(Vector)的浮点数列表来表示一个句子。 它的关键特性在于:含义相似的句子在相同的向量空间里,其向量在几何结构上也是彼此接近的。 本教程中使用的模型 sentence-transformers/all-MiniLM-L6-v2会将每个句子映射到 384 维 的向量空间中。该模型在超过 10 亿个句子对上进行了微调。诸如“我需要取消订单”和“如何退货?”的向量会靠得很近,而“今天天气真好”则会离它们很远。 跟手撕大模型中的猫和狗各提问384个问题,然后逐渐训练后,猫和狗的位置会相互靠近。 给个3维的例子,相近语义的句子会自然靠在一起。但实际,我们不知道第74维到底是什么含义,那是训练后的自动结果: 平均池化与归一化(Pooling and Normalization) 原始的 Transformer 模型会为每个 Token 输出一个向量。对于语义搜索,我们需要每个句子只有一个向量。 平均池化(Mean Pooling):通过对所有 Token 向量取平均值来解决这个问题。 归一化(Normalization):将结果缩放到单位长度(模长为 1),这能极大简化相似度的计算。 在 Transformers.js 中,当你向管道调用传递 { pooling: 'mean', normalize: true } 时,这两个步骤都会自动完成。 我们来详细解释一下什么是平均池化: 下面把 Mean Pooling(平均池化) 用一个更细的例子拆开讲,重点解释: ...

2026年06月19日 · 21 分钟 · 4314 字 · 八戒