fasthan small模型下载与本地部署:从权重校验到ONNX量化实战
简介本资源为fasthan模型的small规格下载包面向需要快速部署或研究轻量级中文预训练模型的开发者与学习者可用于文本分类、序列标注等下游任务的微调实验。压缩包共包含5个文件以bin权重文件、json配置文件、chars_vocab与label_vocab词表文件及txt说明文件为主整体约137.5MB体积适中便于本地加载与迁移。其中bin文件承载模型参数json记录结构配置两类vocab文件分别对应字符与标签映射便于直接接入训练流程。目前已有245人学习下载适合希望低成本验证模型效果、搭建基线实验或进行二次开发的技术人员参考使用。1. 当“small”成为刚需fasthan模型下载背后的真实诉求最近半年后台被问得最多的一类问题不是某个大模型怎么微调而是“fasthan模型下载small”这个组合词到底指什么、值不值得跟。先说结论它大概率指向的是一类面向轻量级场景的预训练模型权重获取与本地部署需求——名字里的“small”不是随便加的它意味着参数量被压到能在消费级显卡甚至 CPU 上跑推理而“fasthan”这个拼写本身在检索时经常和“fast”“than”混在一起导致很多人搜到的结果是错的。我真正开始重视这个方向是因为一个做边缘设备的朋友。他们要在产线工控机上跑缺陷检测机器只有 8GB 显存还不能联网。大模型方案全部翻车最后就是靠一个 small 级别的模型权重落地。这件事让我意识到模型下载不是终点能不能在目标硬件上跑起来才是。这篇文章就按这个逻辑走——先讲清楚 small 模型下载到底在解决什么问题再给可复现的下载、校验、加载步骤最后把参数和坑一条条摆出来。适合手里有具体硬件约束、需要本地推理的工程师也适合刚接触模型部署、想找一个完整小项目练手的新手。2. 拆解 fasthan small模型选型与下载渠道的取舍2.1 small 级别模型的参数边界与硬件匹配在动手下载之前必须先搞清楚“small”在不同模型家族里对应的参数量级。这个区间没有统一标准但业界常见做法是参数量在 100M 到 1.5B 之间权重文件在 FP16 下约 200MB 到 3GB。低于 100M 的通常叫 tiny 或 nano高于 1.5B 的就不再适合“small”这个标签了。为什么这个边界重要因为它直接决定你的硬件能不能吃下。我一般用下面这个经验表来快速判断参数量级FP16 权重大小最低显存要求典型推理硬件100M 左右约 200MB1GB树莓派、手机 NPU300M 左右约 600MB2GB入门级独显、工控机700M 左右约 1.4GB4GBGTX 1650、MX5501.5B 左右约 3GB6GBRTX 2060、T4这张表是我踩过坑之后总结的。早期我按“参数量 × 2 字节”估算显存结果加载时直接 OOM因为忽略了推理框架的中间激活值和 KV Cache 开销。实际显存占用通常是权重体积的 1.5 到 2 倍做方案时一定要留余量。选型时还有一个容易被忽略的点small 模型往往有多个变体比如 base、instruct、chat 版本。如果你要做的是分类或特征提取选 base要做对话或指令跟随选 instruct。下载前先确认自己的任务类型否则下回来发现输出格式不对又得重新下。2.2 下载渠道的三种来源与校验方法模型权重的来源无非三类官方仓库、镜像站、以及社区转存。这三者的可靠性依次递减但访问便利性依次递增。我的原则是能走官方就走官方官方不通再考虑镜像社区转存只用来做交叉验证。官方仓库通常提供 Git LFS 或直接的文件下载。以常见的 Hugging Face 风格仓库为例下载命令如下# 安装必要的下载工具 pip install huggingface_hub # 下载指定模型的所有文件到本地目录 huggingface-cli download \ --repo-type model \ --local-dir ./fasthan-small \ --local-dir-use-symlinks False \ your-target-repo/fasthan-small这段命令的关键参数说明--repo-type model指定下载的是模型而非数据集--local-dir指定本地保存路径--local-dir-use-symlinks False强制复制真实文件而不是创建符号链接避免后续移动目录时链接失效。如果你在国内网络环境下下载慢可以设置HF_ENDPOINT环境变量指向可用的镜像地址但要注意镜像同步可能有延迟。下载完成后必须做完整性校验。很多“模型加载失败”的问题根源就是下载不完整。校验分两步import hashlib import os def sha256_file(filepath): 计算文件的 SHA256 哈希值 h hashlib.sha256() with open(filepath, rb) as f: # 分块读取避免大文件占用过多内存 for chunk in iter(lambda: f.read(8192), b): h.update(chunk) return h.hexdigest() # 对比官方公布的哈希值 local_hash sha256_file(./fasthan-small/pytorch_model.bin) print(f本地文件哈希: {local_hash}) # 与仓库页面或 README 中公布的哈希值逐字符比对逻辑说明分块读取是为了处理超过内存的大文件哈希比对必须逐字符不能只看前几位。如果官方没有公布哈希至少检查文件大小是否与仓库页面一致误差超过 1KB 就重新下载。2.3 目录结构与配置文件的最小集合一个能正常加载的模型目录通常包含以下几类文件权重文件pytorch_model.bin或model.safetensors后者加载更快且更安全配置文件config.json定义模型结构参数分词器文件tokenizer.json、vocab.txt或tokenizer_config.json生成配置generation_config.json影响推理时的默认行为我见过最常见的翻车场景是只下了权重文件没下配置文件然后加载时报“KeyError: model_type”。权重和配置必须来自同一个仓库的同一个版本混用不同版本的配置会导致结构不匹配。检查目录是否完整可以用这段脚本import os import json REQUIRED_FILES [config.json, tokenizer_config.json] WEIGHT_FILES [pytorch_model.bin, model.safetensors] def check_model_dir(model_dir): 检查模型目录是否包含加载所需的最小文件集合 missing [] for f in REQUIRED_FILES: if not os.path.exists(os.path.join(model_dir, f)): missing.append(f) # 权重文件至少存在一个 if not any(os.path.exists(os.path.join(model_dir, w)) for w in WEIGHT_FILES): missing.append(权重文件(bin或safetensors)) if missing: print(f缺失文件: {missing}) return False # 读取配置确认模型类型 with open(os.path.join(model_dir, config.json)) as f: cfg json.load(f) print(f模型类型: {cfg.get(model_type)}, 参数量配置: {cfg.get(hidden_size)}) return True check_model_dir(./fasthan-small)这段脚本先检查必需文件是否存在再读取配置打印关键字段。如果model_type是空的或者报错说明配置文件损坏需要重新下载。3. 从下载到推理small 模型本地跑通的最小闭环3.1 环境准备与依赖版本锁定模型能下载不代表能加载环境依赖是第二道坎。small 模型通常依赖 PyTorch 或 TensorFlow以及 Transformers 库。版本不匹配是新手最容易踩的坑比如用 Transformers 4.40 去加载一个为 4.30 写的自定义模型可能直接报“unexpected key”。我的习惯是先看模型仓库的 README 或requirements.txt如果没有就按下面这个保守组合来# 创建独立虚拟环境避免污染全局 python -m venv venv_fasthan source venv_fasthan/bin/activate # Windows 用 venv_fasthan\Scripts\activate # 安装核心依赖版本按模型要求调整 pip install torch2.1.0 --index-url https://download.pytorch.org/whl/cu118 pip install transformers4.36.0 pip install safetensors0.4.0 pip install accelerate0.25.0参数说明torch的--index-url指定 CUDA 版本对应的 wheel 源cu118 对应 CUDA 11.8transformers版本不要盲目追新先确认模型是否兼容accelerate用于自动设备映射small 模型虽然单卡能跑但加上它方便后续扩展。安装完成后用一行命令验证环境python -c import torch; print(torch.__version__, torch.cuda.is_available())如果输出False说明 CUDA 不可用模型会回退到 CPU 推理。small 模型在 CPU 上也能跑但速度会慢 5 到 10 倍做实时应用时要提前评估。3.2 加载模型并执行首次推理环境就绪后加载模型并跑一次推理是整个流程的“验收测试”。下面这段代码是最小闭环from transformers import AutoModelForSequenceClassification, AutoTokenizer import torch # 指定本地模型目录不要用在线仓库名避免重复下载 model_dir ./fasthan-small # 加载分词器和模型 tokenizer AutoTokenizer.from_pretrained(model_dir) model AutoModelForSequenceClassification.from_pretrained( model_dir, torch_dtypetorch.float16, # 半精度加载节省显存 device_mapauto # 自动分配到可用设备 ) # 准备输入 text 这是一条用于验证模型加载的测试文本 inputs tokenizer(text, return_tensorspt, truncationTrue, max_length128) # 推理不计算梯度 model.eval() with torch.no_grad(): outputs model(**inputs) # 打印输出形状和预测结果 print(f输出 logits 形状: {outputs.logits.shape}) pred torch.argmax(outputs.logits, dim-1) print(f预测类别: {pred.item()})逻辑说明AutoTokenizer和AutoModelForSequenceClassification会自动读取config.json中的结构定义torch_dtypetorch.float16把权重转成半精度显存占用减半但 CPU 上可能不支持需要改回float32device_mapauto让 accelerate 自动决定放 CPU 还是 GPU。model.eval()和torch.no_grad()是推理必备否则会额外占用显存计算梯度。如果这一步报错优先看报错信息里的关键词size mismatch说明权重和配置不匹配CUDA out of memory说明显存不够改小max_length或换 CPUCant load tokenizer说明分词器文件缺失。3.3 推理性能的三个关键参数跑通之后下一步是调性能。small 模型的推理速度受三个参数影响最大batch size一次处理多少条样本。GPU 上适当增大能提升吞吐但显存占用线性增长。我一般从 8 开始试逐步加到 32观察显存和延迟的平衡点。max_length输入序列的最大长度。这个参数对显存的影响是平方级的因为注意力机制的计算量随长度增长。如果任务文本普遍较短把max_length从 512 降到 128显存能省一半以上。精度FP16 比 FP32 快约 1.5 到 2 倍显存减半但精度损失通常在可接受范围内。INT8 量化能进一步压缩但需要额外的量化工具且可能影响小模型的输出质量。下面是一个批量推理的示例展示如何控制这三个参数def batch_inference(model, tokenizer, texts, batch_size8, max_length128): 批量推理控制 batch size 和序列长度 results [] for i in range(0, len(texts), batch_size): batch texts[i:i batch_size] inputs tokenizer( batch, return_tensorspt, truncationTrue, paddingTrue, # 批次内对齐长度 max_lengthmax_length ).to(model.device) with torch.no_grad(): outputs model(**inputs) preds torch.argmax(outputs.logits, dim-1) results.extend(preds.cpu().tolist()) return results # 测试 100 条文本的吞吐 test_texts [f测试文本第{i}条 for i in range(100)] preds batch_inference(model, tokenizer, test_texts, batch_size16, max_length64) print(f完成 {len(preds)} 条推理)参数说明paddingTrue让同一批次内的序列对齐到最长长度避免逐条处理.to(model.device)确保输入和模型在同一设备上否则会报设备不匹配preds.cpu().tolist()把结果从 GPU 搬回 CPU 并转成 Python 列表方便后续处理。4. 避坑指南small 模型下载与加载的五个血泪教训4.1 下载中断导致权重文件损坏现象模型加载时报RuntimeError: Error(s) in loading state_dict或者哈希校验不通过。原因网络不稳定导致下载中断文件只下了一半但文件名和大小看起来正常。尤其是用浏览器直接下载大文件时中断后不会自动续传。解决用支持断点续传的工具比如huggingface-cli或wget -c。下载完成后必须做哈希校验不要只看文件大小。如果已经损坏删除后重新下载不要尝试修复。4.2 配置文件与权重版本不匹配现象加载时报KeyError或size mismatch for xxx.weight提示某个层的维度对不上。原因从不同仓库或不同分支下载了权重和配置。比如权重是 v1.0 的配置是 v1.1 的中间模型结构改了。解决始终从同一个仓库的同一个 commit 下载全部文件。如果仓库提供了revision参数下载时指定具体的 commit hash避免拉到最新版但权重还是旧的。4.3 显存不足被误判为模型问题现象加载时直接 OOM或者推理到一半崩溃报CUDA out of memory。原因只按权重体积估算显存忽略了推理时的中间激活值和 KV Cache。small 模型虽然权重小但如果max_length设得很大激活值可能比权重还占地方。解决先用max_length64和batch_size1跑通再逐步往上加。用torch.cuda.max_memory_allocated()监控实际显存占用找到瓶颈后针对性调整。如果显存实在不够用device_mapauto让部分层放 CPU或者改用 INT8 量化。4.4 分词器文件缺失导致输入格式错误现象模型能加载但推理结果全是乱码或固定输出同一个类别。原因分词器文件不完整或者用了错误的分词器。比如模型训练时用的是 BPE 分词加载时却用了 WordPiece。解决确认tokenizer_config.json中的tokenizer_class与模型匹配。用tokenizer.decode(inputs[input_ids][0])打印解码后的文本看是否和原始输入一致。如果不一致说明分词器用错了。4.5 忽略推理框架的默认行为差异现象同一份权重在不同框架或不同版本下输出结果不一致。原因不同推理框架对 padding、attention mask、位置编码的处理有细微差异。比如某些框架默认开启use_cache某些默认关闭。解决固定推理框架和版本不要频繁升级。如果必须跨框架对比先用同一批输入做基准测试确认输出差异在可接受范围内。对于分类任务关注最终预测类别是否一致对于生成任务关注前几个 token 是否相同。5. 进阶技巧用 ONNX 导出把 small 模型压到极致跑通 PyTorch 推理只是第一步。如果你要把 small 模型部署到没有 Python 环境的设备上或者想进一步压缩推理延迟ONNX 导出是绕不开的一环。我自己的习惯是先在 PyTorch 上验证精度再导出 ONNX 做部署最后用 ONNX Runtime 做量化。导出 ONNX 的核心代码如下import torch from transformers import AutoModelForSequenceClassification, AutoTokenizer model_dir ./fasthan-small tokenizer AutoTokenizer.from_pretrained(model_dir) model AutoModelForSequenceClassification.from_pretrained(model_dir) model.eval() # 构造示例输入用于追踪计算图 dummy_input tokenizer( 示例输入文本, return_tensorspt, max_length64, truncationTrue, paddingmax_length ) # 导出 ONNX指定输入输出名称 torch.onnx.export( model, (dummy_input[input_ids], dummy_input[attention_mask]), fasthan-small.onnx, input_names[input_ids, attention_mask], output_names[logits], dynamic_axes{ input_ids: {0: batch, 1: sequence}, attention_mask: {0: batch, 1: sequence}, logits: {0: batch} }, opset_version14, do_constant_foldingTrue ) print(ONNX 导出完成)参数说明dynamic_axes让 batch 和 sequence 维度可变否则导出的模型只能接受固定形状输入opset_version14是较稳定的版本太低可能不支持某些算子太高可能不被目标推理引擎支持do_constant_foldingTrue会在导出时做常量折叠优化减小模型体积。导出后用 ONNX Runtime 加载并验证import onnxruntime as ort import numpy as np # 创建推理会话指定优化级别 session ort.InferenceSession( fasthan-small.onnx, providers[CPUExecutionProvider] # 有 GPU 可换 CUDAExecutionProvider ) # 准备输入注意类型必须是 numpy input_ids dummy_input[input_ids].numpy().astype(np.int64) attention_mask dummy_input[attention_mask].numpy().astype(np.int64) # 推理 outputs session.run( [logits], {input_ids: input_ids, attention_mask: attention_mask} ) print(fONNX 输出形状: {outputs[0].shape})这里有个容易翻车的点ONNX Runtime 的输入类型必须和导出时一致。如果导出时input_ids是 int64推理时传 int32会直接报类型错误。另外providers的顺序决定优先级有 GPU 时把CUDAExecutionProvider放前面但要确认 onnxruntime-gpu 版本和 CUDA 版本匹配。如果还想进一步压缩可以用 ONNX Runtime 的量化工具做 INT8 量化from onnxruntime.quantization import quantize_dynamic, QuantType # 动态量化适合 Transformer 类模型 quantize_dynamic( model_inputfasthan-small.onnx, model_outputfasthan-small-int8.onnx, weight_typeQuantType.QInt8 ) print(INT8 量化完成)动态量化会把权重转成 INT8推理时再动态反量化。small 模型量化后体积能缩小到原来的四分之一左右CPU 推理速度提升明显但精度可能下降 1 到 3 个百分点。做分类任务时如果类别区分度大量化影响不大做细粒度任务时建议先对比量化前后的验证集精度。最后说一个我自己的习惯每次导出 ONNX 后一定用同一批测试数据对比 PyTorch 和 ONNX 的输出计算最大绝对误差。如果误差超过 1e-3就要检查导出参数或算子兼容性。这个步骤看起来繁琐但能避免上线后才发现精度对不上的尴尬。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

支付回调与订单状态管理:幂等、去重与对账补偿实战

支付回调与订单状态管理:幂等、去重与对账补偿实战

简介:基于Selenium的自动化抢票脚本,面向需要在大麦网抢购热门演出门票的普通用户、代抢群体及自动化测试学习者,主要解决手动抢票易错过、下单慢、支付流程繁琐等痛点。整套资源只有3个文件,分别是Python主脚本、ini配置文件和Ma…

2026/10/11 2:47:14 阅读更多 →
大数据预处理实战:数据清洗、倾斜调优与数据质量管控

大数据预处理实战:数据清洗、倾斜调优与数据质量管控

都说大数据项目里最耗时间的不是写模型、不是调参,而是预处理数据。这话一点不夸张——我在几个真实项目里统计过,从数据接入到最后的统计分析,预处理环节通常要吃掉 60% 到 80% 的人力投入。刚入行那会儿我也以为预处理就是"洗洗数据&q…

2026/10/11 2:47:14 阅读更多 →
Hibernate乐观锁实战:@Version配置、冲突处理与重试机制

Hibernate乐观锁实战:@Version配置、冲突处理与重试机制

1. 一次库存超卖,先说清楚乐观锁到底拦的是哪一环我在之前的项目里遇到过这么一件事:某电商系统的库存表,两个用户几乎同时下单买同一件只剩1件的商品。两个请求都先查询库存,发现还剩1件,于是各自扣减库存&#xff0c…

2026/10/11 2:47:14 阅读更多 →

最新新闻

多语言微服务消息可靠性:幂等设计与重试机制实战

多语言微服务消息可靠性:幂等设计与重试机制实战

晚上十点,我盯着监控面板上那个不断攀升的重复消费指标,用户已经反馈“支付成功但订单状态未更新”,而日志里分明看到回调消息被消费了三次。这不是孤立事件。在多语言微服务架构里,消息重复、消息丢失、消费失败几乎是每个团队都…

2026/10/11 3:25:35 阅读更多 →
微服务拆分实战:从限界上下文到订单模块改造

微服务拆分实战:从限界上下文到订单模块改造

/* 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 3:25:35 阅读更多 →
Python代码风格统一利器:Black格式化工具落地与避坑指南

Python代码风格统一利器:Black格式化工具落地与避坑指南

Black 这个工具,这几年在 Python 圈子里基本成了“格式化”的代名词。它解决的是一个特别老、特别烦的问题:代码风格。你缩进用几个空格、字符串用单引号还是双引号、一行写多长、函数参数怎么换行……这些问题每个项目都能吵上半天,而且吵完…

2026/10/11 3:25:35 阅读更多 →
【计算机毕业设计选题】基于Hadoop+Spark的乳腺癌数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习

【计算机毕业设计选题】基于Hadoop+Spark的乳腺癌数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习

计算机毕设指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!也可以在主页上或文末下与…

2026/10/11 3:25:35 阅读更多 →
从差评到自研:手把手教你打造低延迟IP-KVM远程管理设备

从差评到自研:手把手教你打造低延迟IP-KVM远程管理设备

/* 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 3:25:35 阅读更多 →
Doris重复查询优化:基于Redis的结果缓存架构与实战

Doris重复查询优化:基于Redis的结果缓存架构与实战

大多数人说 Doris 查询已经够快了,为什么还要折腾 Redis?这个问题的答案往往不在 Doris 身上,而在“重复查询”这四个字上。我见过太多 BI 看板、定时报表、接口轮询,把同样一条 SQL 在 Doris 上反复执行,一分钟几十次…

2026/10/11 3:24:35 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 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/10 5:23:50 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →