Megatron-LM BERT 大规模预训练实战:340M/4B/20B 配置全解析与源码级实现原理
人工智能大模型强化学习AI Agent微调【免费下载链接】OpenClaw-RLOpenClaw-RL: Train any agent simply by talking项目地址https://gitcode.com/gh_mirrors/op/OpenClaw-RL点击查看免费下载导读本文围绕 Megatron-LM 仓库中 examples/bert 目录提供的 BERT 预训练示例展开系统讲解基于 Docker 的训练环境搭建、340MBERT-Large基准脚本的每一组启动参数以及官方给出的 4B、20B 扩展配置。同时深入pretrain_bert.py与 Megatron Core 的BertModel、BERT 数据集实现说明 MLM/SOP 损失、掩码策略、注意力后端与张量/流水线并行是如何在代码层面落地的。读完本文你将具备从单机 8 卡到 128 卡规模部署并调优 Megatron-LM BERT 预训练任务的完整实战能力。1. 示例总览从 README 到可运行的训练入口Megatron-LM/examples/bert/目录只包含两份关键文件README.md训练环境搭建说明Docker 方式与三档模型规模配置340M / 4B / 20Btrain_bert_340m_distributed.sh默认执行的 340M 参数 BERT-Large 分布式预训练脚本。脚本最终调用的是仓库根目录下的 pretrain_bert.pytorchrun ... pretrain_bert.py该入口通过 Megatron 训练框架的pretrain()函数完成数据集构建、模型构建、前向/损失计算与分布式调度。整个调用链为train_bert_340m_distributed.sh └─ torchrun pretrain_bert.py ├─ train_valid_test_datasets_provider (构建 BERT Masked WordPiece 数据集) ├─ model_provider (构建 BertModel / legacy BertModel) └─ forward_step loss_func (MLM 损失 SOP 二分类损失)2. 训练环境搭建Docker 运行方式README 给出的标准启动方式是基于 NVIDIA PyTorch 容器运行先设置四个路径环境变量再一次性传入启动脚本PYTORCH_IMAGEnvcr.io/nvidia/pytorch:24.01-py3 CHECKPOINT_PATH # 指定 checkpoint 保存/加载路径 TENSORBOARD_LOGS_PATH # 指定 TensorBoard 日志路径 VOCAB_FILE # 指定 bert-vocab.txt或 bert-vocab.json文件路径 DATA_PATH # 指定数据前缀形如 prefix_text_document docker run \ --gpusall \ --ipchost \ --workdir /workspace/megatron-lm \ -v /path/to/data:/path/to/data \ -v /path/to/megatron-lm:/workspace/megatron-lm \ nvcr.io/nvidia/pytorch:24.01-py3 \ bash examples/bert/train_bert_340m_distributed.sh \ $CHECKPOINT_PATH $TENSORBOARD_LOGS_PATH $VOCAB_FILE $DATA_PATH关键点说明--gpusall将宿主机全部 GPU 暴露给容器配合脚本内的GPUS_PER_NODE8使用--ipchost共享宿主进程间通信命名空间避免 DataLoader 多进程共享内存不足--workdir /workspace/megatron-lm容器内工作目录因此脚本以examples/bert/train_bert_340m_distributed.sh这样的相对路径调用挂载卷数据目录与 Megatron-LM 源码目录都需要以卷的方式挂载进容器四个位置参数$CHECKPOINT_PATH $TENSORBOARD_LOGS_PATH $VOCAB_FILE $DATA_PATH依次对应脚本内$1 ~ $4顺序不能颠倒。README 也提示实际环境不同如 Kubernetes、Slurm、裸机多机时上述命令可能需要调整例如换成srun/mpirun或直接torchrun启动。数据格式说明DATA_PATH指向的是 Megatron 索引数据集IndexedDataset的文件前缀即通过 tools/preprocess_data.py 对语料做 WordPiece 分词、mmap 索引化后产出的prefix_text_document.idx/.bin系列文件。VOCAB_FILE 对应的即 BERT WordPiece 词表bert-vocab.txt或脚本注释中的bert-vocab.json。3. 340M 基准脚本逐参数拆解train_bert_340m_distributed.sh 第一行注释即声明“Runs the 340M parameter model (Bert - Large)”即该脚本对应 BERT-Large 规模的 340M 参数模型。下面按脚本内参数组逐段解读。3.1 分布式启动参数DISTRIBUTED_ARGSexport CUDA_DEVICE_MAX_CONNECTIONS1 GPUS_PER_NODE8 MASTER_ADDRlocalhost MASTER_PORT6000 NUM_NODES1 NODE_RANK0 WORLD_SIZE$(($GPUS_PER_NODE*$NUM_NODES)) DISTRIBUTED_ARGS( --nproc_per_node $GPUS_PER_NODE --nnodes $NUM_NODES --master_addr $MASTER_ADDR --master_port $MASTER_PORT )CUDA_DEVICE_MAX_CONNECTIONS1限制每设备 CUDA 连接数规避多进程通信时的潜在资源竞争单机 8 卡GPUS_PER_NODE8、NUM_NODES1总WORLD_SIZE8多机训练时只需把MASTER_ADDR改为主节点 IP、NUM_NODES改为节点数、NODE_RANK按节点 0 递增。3.2 模型结构参数BERT_MODEL_ARGSBERT_MODEL_ARGS( --num-layers 24 --hidden-size 1024 --num-attention-heads 16 --seq-length 512 --max-position-embeddings 512 --attention-backend auto # 可选 flash/fused/unfused/local )340M ≈ BERT-Large24 层 Transformer、隐藏维度 1024、16 头注意力与经典 BERT-Large 结构一致--seq-length 512与--max-position-embeddings 512一致训练序列长度与位置编码上限都取 512--attention-backend auto的取值flash/fused/unfused/local/auto与 arguments.py 中定义一致默认auto即由框架结合 Transformer EngineTE版本自动选择融合注意力路径。选择该参数时需注意约束local后端仅在与--spec local搭配时可用见 arguments.py 校验逻辑flash/fused 依赖 TE 且对版本有下限要求。3.3 训练与优化参数TRAINING_ARGSTRAINING_ARGS( --micro-batch-size 4 --global-batch-size 32 --train-iters 1000000 --weight-decay 1e-2 --clip-grad 1.0 --fp16 --lr 0.0001 --lr-decay-iters 990000 --lr-decay-style linear --min-lr 1.0e-5 --lr-warmup-fraction .01 )各参数含义与取值依据参数值说明--micro-batch-size4单卡单次前向/反向的 micro-batch 大小--global-batch-size32全局逻辑 batch由 micro-batch × 数据并行度 × 梯度累积步数构成--train-iters1000000总训练迭代数约百万步量级的完整预训练--weight-decay1e-2权重衰减系数默认值即 0.01arguments.py 中default0.01--clip-grad1.0梯度裁剪阈值默认 1.0--fp16—启用混合精度AMP节省显存并加速--lr0.0001初始学习率--lr-decay-iters990000学习率衰减跨度比 train-iters 略小留出尾部余量缺省时默认取 train-iters--lr-decay-stylelinear线性衰减可选 constant/linear/cosine/inverse-square-root/WSD--min-lr1.0e-5学习率下限--lr-warmup-fraction0.01前 1% 迭代约 1 万步线性 warmup默认从 0 起--lr-warmup-init默认 0.0注意脚本中--weight-decay与--clip-grad重复出现两次这是历史遗留冗余写法不影响正确性后者覆盖前者取值相同。3.4 模型并行参数MODEL_PARALLEL_ARGSMODEL_PARALLEL_ARGS( --tensor-model-parallel-size 8 --pipeline-model-parallel-size 16 )这是脚本中最激进的一组配置张量并行 8 路 × 流水线并行 16 段。在 8 卡单机上实际执行时流水线并行 16 意味着每个 GPU 上会承载 2 个流水线虚拟段即 virtual pipeline配合--num-layers-per-virtual-pipeline-stage使用可做跨机 VPP。若改为单机 8 卡直接运行建议将--pipeline-model-parallel-size调小例如 2 或 4或将其视为面向多机如 16 节点 × 8 卡 128 GPU的模板参数。这一点 README 中“Depending on the environment you are running it the above command might look slightly different”的提示同样适用。3.5 数据参数DATA_ARGSDATA_ARGS( --data-path $DATA_PATH --vocab-file $VOCAB_FILE --split 949,50,1 )--data-path索引数据集前缀该参数支持单前缀、权重前缀对列表如weight1 prefix1 weight2 prefix2、多前缀列表三种格式arguments.py--split 949,50,1训练/验证/测试按 94.9% / 5.0% / 0.1% 划分与 BERT 预训练常见的949,50,1惯例一致--vocab-fileWordPiece 词表路径。3.6 评估与日志参数EVAL_AND_LOGGING_ARGSEVAL_AND_LOGGING_ARGS( --log-interval 100 --save-interval 10000 --eval-interval 1000 --save $CHECKPOINT_PATH --load $CHECKPOINT_PATH --eval-iters 10 --tensorboard-dir $TENSORBOARD_LOGS_PATH )每 100 步打印一次日志每 1000 步在验证集上评估一次每轮 10 个 iteration每 10000 步保存一次 checkpoint且训练中断后可凭--load $CHECKPOINT_PATH恢复--tensorboard-dir输出 TensorBoard 事件配合--log-interval可实时观察 lm loss / sop loss 曲线。4. 模型规模扩展4B 与 20B 配置README 明确指出“示例展示的是 340M 模型的跑法”并额外给出了两档更大规模的配置模板仅需替换上述BERT_MODEL_ARGS与并行参数即可4B 配置--num-layers 48 \ --hidden-size 2560 \ --num-attention-heads 32 \ --tensor-model-parallel-size 1 \ --pipeline-model-parallel-size 1 \48 层、隐藏维度 2560、32 头模型并行均取 1即纯数据并行起步适合单机多卡如 8×A100直接扩展数据并行规模。20B 配置--num-layers 48 \ --hidden-size 6144 \ --num-attention-heads 96 \ --tensor-model-parallel-size 4 \ --pipeline-model-parallel-size 4 \48 层、隐藏维度 6144、96 头张量并行 4 × 流水线并行 4即 16 个模型并行分片通常需要至少 16 张 GPU如 4 节点 × 8 卡中取 16 卡或直接 2 节点 × 8 卡。可据此推算20B 配置下 FFN 隐藏维度默认为4 × hidden-size 24576arguments.py 中--ffn-hidden-size缺省时取 4×hidden-size。三档规模对比表规模层数hidden注意力头张量并行流水线并行参数量级340M24102416816~0.34BBERT-Large4B4825603211~4B20B4861449644~20B从源码结构看上述所有规模共用同一个pretrain_bert.py入口模型尺寸只由--num-layers / --hidden-size / --num-attention-heads决定并行切分只由--tensor-model-parallel-size / --pipeline-model-parallel-size决定因此替换参数即可无缝切换规模。5. 源码级实现原理从 pretrain_bert.py 到 BertModel5.1 入口与模型构建pretrain_bert.py 的model_provider展示了两个层面的模型实现legacy 模型--use-legacy-models时使用megatron.legacy.model.BertModelMegatron Core 模型默认使用 bert_layer_specs.py 提供的bert_layer_with_transformer_engine_specTransformer Engine 实现支持 FP8 等或--spec local切换为纯 Megatron Core 实现的bert_layer_local_spec使用ColumnParallelLinear/DotProductAttention。BertModelmegatron/core/models/bert/bert_model.py由四部分组成LanguageModelEmbedding含 token 类型嵌入num_tokentypes2当启用二分类头时、TransformerBlock编码器、BertLMHeadoutput_layer以及可选的binary_headPoolerNSP/SOP 二分类头。位置编码默认learned_absolute也支持rope。5.2 前向与损失MLM SOPforward_step从 batch 中解出tokens / types / sentence_order / loss_mask / lm_labels / padding_mask六个字段pretrain_bert.py其中tokens输入 token idstypes句子 A/B 的 token 类型 idsentence_order二分类标签下一句是否随机替换loss_mask仅对 masked 位置计算 MLM 损失的掩码lm_labels掩码位置的真实 token id。loss_funcpretrain_bert.py计算两类损失MLM 掩码语言模型损失按 loss_mask 加权平均与SOP 句子顺序损失sentence_order上的交叉熵二者相加作为总损失并分别记录lm loss与sop loss到日志。--bert-no-binary-head可关闭二分类头arguments.py此时不产生 sop loss模型退化为纯 MLM 预训练。5.3 数据集构建与掩码策略train_valid_test_datasets_provider使用BERTMaskedWordPieceDatasetmegatron/core/datasets/bert_dataset.py构建三份数据集其配置项包括--mask-prob默认 0.15token 被选为掩码候选的概率--short-seq-prob默认 0.1产出短序列小于目标长度的概率--mid-level-dataset-surplus、--allow-ambiguous-pad-tokens等辅助项。样本构造逻辑bert_dataset.py把样本切分为连续子段 A 与 B以 50% 概率随机交换生成is_random标签拼接为[CLS] A [SEP] B [SEP]再执行掩码。掩码替换策略bert_dataset.py遵循 BERT 原文的 80/10/10 规则80% 概率替换为[MASK]10% 概率替换为词表随机 token10% 概率保持原词不变。此外MaskedWordPieceDatasetConfigmasked_dataset.py支持 SpanBERT 风格的 n-gram 掩码扩展masking_max_ngram、masking_use_geometric_distribution等当前 BERT 示例固定为 3-gram、整词掩码、无置换、无几何分布。5.4 注意力后端与掩码维度随 TE 版本自适配BertModel._sanity_check_attention_and_get_attn_mask_dimensionbert_model.py根据--attention-backend与 Transformer Engine 版本决定注意力掩码的维度格式TE ≥ 1.10flash/fused/unfused 均使用 padding mask掩码形状[b,1,1,s]b11sTE 1.7 ~ 1.10flash/fused 用 b11sunfused 用[b,1,s,s]b1ssTE 1.7仅支持 unfused且禁用 flash/fused使用 localMCore 原生DotProductAttention时仅允许local/auto掩码为 b1ss。这就是--attention-backend auto可以“无脑使用”的原因框架会根据实际安装的 TE 版本自动降级到可用后端。若显式指定 flash 而 TE 版本过旧训练会直接断言报错。6. 实战注意事项小结并行规模与显存匹配340M 脚本默认 TP8 × PP16 面向多机设计单机 8 卡直接跑时请下调 PP 并开启 virtual pipeline或改用 4B 配置TP1、PP1做纯数据并行。容器版本对齐README 指定nvcr.io/nvidia/pytorch:24.01-py3其中预装的 TE 版本决定可用的注意力后端若要使用flash/fused请确认 TE ≥ 1.7。数据与词表DATA_PATH必须是经 tools/preprocess_data.py 预处理过的索引数据集前缀词表文件需与数据分词方式BertWordPieceLowerCase一致pretrain_bert.py入口默认 tokenizer 类型即BertWordPieceLowerCase。学习率调度--lr-decay-iters 990000略小于--train-iters 1000000保证训练结束前学习率已平滑衰减到--min-lr 1.0e-5若希望严格对齐可保持--lr-decay-iters缺省默认取 train-iters。断点续训--save与--load指向同一CHECKPOINT_PATH配合--save-interval 10000可在长程预训练中稳定恢复。通过本示例开发者可以快速验证从数据预处理、Docker 启动到三档规模配置的完整 BERT 预训练流水线并借助源码路径进一步定制掩码策略、注意力后端与并行方案。赞分享人工智能大模型强化学习AI Agent微调【免费下载链接】OpenClaw-RLOpenClaw-RL: Train any agent simply by talking项目地址https://gitcode.com/gh_mirrors/op/OpenClaw-RL点击查看免费下载相关推荐Snowflake Arctic Embed M Long OpenMind部署指南本地、云端和边缘计算全攻略Snowflake Arctic Embed M Long OpenMind部署指南本地、云端和边缘计算全攻略 Snowflake Arctic EmbedMegatron-LM GPT-3 175B 大规模预训练实战从 Docker 环境到分布式训练脚本全解析Megatron LM GPT 3 175B 大规模预训练实战从 Docker 环境到分布式训练脚本全解析 本篇技术指南基于 Megatron LM 仓库中的人工智能大模型预训练分布式训练深度学习强化学习Megatron-LM实战指南解锁大规模Transformer训练的高效密码Megatron LM实战指南解锁大规模Transformer训练的高效密码 Megatron LM是一款由NVIDIA开发的开源项目专注于实现大规模Tra人工智能大模型预训练分布式训练深度学习强化学习上一篇从 clinical_index 到患者队列用 idc-index 发现、解码并关联 IDC 临床数据的实战指南下一篇OnyxdanswerGroup Manager 范围化权限设计研究is_manager 角色绑定、双门强制执行与实时作用域解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

OWASP Top 10 仓库多版本重组:2021 与 2025 分离为独立 MkDocs 站点并保持 URL 向后兼容

OWASP Top 10 仓库多版本重组:2021 与 2025 分离为独立 MkDocs 站点并保持 URL 向后兼容

应用安全 【免费下载链接】Top10 Official OWASP Top 10 Document Repository 项目地址: https://gitcode.com/gh_mirrors/top/Top10 点击查看 免费下载 本文基于 OWASP Top 10 官方文档仓库(Top10)中的 REORGANIZATION-2025.md 展开&#x…

2026/10/12 3:44:14 阅读更多 →
SpringBoot+Vue+MySQL医疗报销系统毕业设计:全栈实现与部署详解

SpringBoot+Vue+MySQL医疗报销系统毕业设计:全栈实现与部署详解

毕业设计选医疗报销系统这个方向的人不少,但真正能把源码、数据库、论文、部署文档一整套整理干净的,其实不多。我之前帮人带过几个类似项目,也见过不少同学最后卡在“代码能跑但讲不清”或者“功能做完了但论文不知道写什么”的状态。这套Sp…

2026/10/12 3:44:14 阅读更多 →
三步估算显存需求:你的显卡到底能跑多大的大模型?

三步估算显存需求:你的显卡到底能跑多大的大模型?

前天有个朋友在群里说,他用8G显存的显卡,把一个十几亿参数规模的模型给跑起来了。我第一反应不是“厉害”,而是“能跑,但能跑多远”。果然他又补了一句:上下文一超过一千字就不行,再长一点直接报错退出。这…

2026/10/12 3:44:13 阅读更多 →

最新新闻

OpenCV图像傅里叶变换实战:频谱可视化与频率域滤波

OpenCV图像傅里叶变换实战:频谱可视化与频率域滤波

傅里叶变换这玩意儿,上学的时候信号与系统课里被那一堆公式折磨得死去活来,当时就一个想法:这玩意儿除了考试到底还能干啥?结果工作之后玩OpenCV,发现图像处理里到处是它的影子,什么去噪、增强、压缩&#…

2026/10/12 4:29:41 阅读更多 →
基于Spring Boot的高校科研信息管理系统设计与实现全解析

基于Spring Boot的高校科研信息管理系统设计与实现全解析

每年四五月份,总有一批人被高校科研管理系统这类选题折磨得睡不着觉。我接过不少类似的咨询和调试需求,从老师、研究生到本科毕设党,需求表单长得差不多:项目申报、中期检查、结题验收、论文登记、经费统计……看上去业务逻辑不复…

2026/10/12 4:29:41 阅读更多 →
跨模态行人重识别实战:对比学习与注意力差异建模复现指南

跨模态行人重识别实战:对比学习与注意力差异建模复现指南

1. 跨模态行人重识别的问题本质与方案定位跨模态行人重识别(Cross-Modality Person Re-identification,业内常简称为跨模态 ReID)要解决的核心问题很具体:同一名行人在可见光摄像头下被拍到一次,又在红外摄像头下被拍到…

2026/10/12 4:29:41 阅读更多 →
AI论文写作全流程指南:从选题到答辩的8个高效工具

AI论文写作全流程指南:从选题到答辩的8个高效工具

每年的四月到六月,我的聊天软件都会收到类似的消息:一个平时不怎么联系的同学突然冒出来,先是"在吗",然后是一句"论文还有救吗"。前几天凌晨,A同学直接把Word文档发过来,文件名是"…

2026/10/12 4:29:41 阅读更多 →
Litellm实战:统一LLM网关,解决多模型接入与成本管控难题

Litellm实战:统一LLM网关,解决多模型接入与成本管控难题

1. 为什么需要 litellm:被模型接入“烦透”之后的必然选择先说个真实场景。某公司内部有一个智能客服项目,最初只接了一家大模型厂商的接口,一切正常。后来升级需求,要同时对比多家头部模型的回答效果,再后来要接入本地…

2026/10/12 4:29:41 阅读更多 →
Hadoop全分布模式:生产级集群部署与稳定性实践指南

Hadoop全分布模式:生产级集群部署与稳定性实践指南

1. 项目概述:为什么“全分布模式”是Hadoop落地的真正起点你搜“hadoop搭建”,前几页几乎全是伪分布式或单机模式教程——界面能跑起来,Web UI能打开,甚至MapReduce任务也能提交成功。但那只是玩具。真正让Hadoop在生产环境站稳脚…

2026/10/12 4:28:41 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →