从零部署万亿参数大模型:Kimi K3本地实战与深度排错指南
在实际 AI 和开源模型领域一个模型能否真正被开发者、研究者乃至企业方便地获取、部署和二次开发其开源状态至关重要。近期一个名为“Kimi K3”的项目在技术社区引发了广泛关注其宣称的庞大参数量级和开源特性无疑为希望探索前沿大模型能力的开发者们打开了一扇新的大门。然而面对一个如此规模的开源项目从“看到开源”到“成功运行”中间隔着环境配置、依赖管理、模型加载、服务部署等一系列工程挑战。本文旨在为希望本地部署和初步探索 Kimi K3 模型的开发者提供一份从零开始的实战指南。我们将绕过营销术语聚焦于技术实现涵盖从环境准备、依赖安装、模型获取、服务启动到基础 API 调用的完整流程并重点分析部署过程中可能遇到的典型问题及其解决方案。无论你是想搭建一个本地测试环境进行模型能力评估还是希望将其集成到自己的研究或应用项目中本文都将提供清晰的路径和关键的排错思路。1. 理解 Kimi K3 开源项目的定位与部署前提在开始动手部署之前我们需要对 Kimi K3 项目有一个基本的技术认知。这并非一个可以直接pip install的 Python 包而是一个包含庞大参数文件、推理代码及相关工具链的复杂项目。其开源链接通常指向 GitHub 等代码托管平台例如可能类似于https://github.com/mewamew/my_ai_town这样的仓库注此为示例实际项目地址需以官方发布为准。部署此类项目本质上是在本地或服务器上复现其运行环境并加载预训练好的模型权重进行推理。1.1 项目核心构成与技术要求一个典型的大模型开源项目通常包含以下几个部分模型定义代码用 PyTorch、JAX 或 TensorFlow 等框架编写的模型网络结构。这部分代码定义了模型的“骨架”。模型权重文件预训练好的参数数据文件体积巨大对于万亿参数模型可能是数百GB甚至TB级别。这是模型的“血肉”。推理服务代码提供 API 接口如 OpenAI API 兼容格式的服务器程序例如基于 FastAPI、vLLM 或类似框架构建。环境配置与工具脚本如requirements.txt,Dockerfile,setup.py, 以及下载脚本、启动脚本等。部署 Kimi K3 对硬件有较高要求。2.8 万亿参数的模型即使在量化如 INT8、INT4后对显存和内存的消耗依然非常可观。你需要准备GPU至少具备 40GB 以上显存的 NVIDIA GPU如 A100、A800、H100多卡并行通常是必须的。内存系统内存建议 128GB 以上用于处理模型权重加载和中间状态。存储预留足够的 SSD 存储空间用于存放模型权重文件预计需要数百 GB。软件Linux 操作系统如 Ubuntu 20.04/22.04、NVIDIA 驱动、CUDA Toolkit、cuDNN 以及 Python 环境。1.2 部署流程总览整个部署过程可以概括为以下关键步骤后续章节将逐一详解环境准备配置基础系统环境、驱动和容器环境如 Docker。获取项目代码与模型克隆开源仓库并下载对应的模型权重文件。构建推理环境安装 Python 依赖可能涉及特定版本的系统库。配置与启动推理服务根据项目说明配置模型路径、并行参数等并启动 API 服务。测试与验证通过简单的客户端脚本调用 API验证服务是否正常工作。问题排查针对部署中常见的错误提供诊断和解决思路。2. 基础环境与依赖配置这是部署过程中最容易出错的一环版本不匹配会导致后续步骤全部失败。我们将采用相对稳妥的 Docker 方式以隔离系统环境。2.1 准备 Docker 与 NVIDIA Container Toolkit如果尚未安装 Docker请先安装。之后必须安装 NVIDIA Container Toolkit以便容器内可以使用 GPU。# 1. 安装 Docker (以 Ubuntu 为例) sudo apt-get update sudo apt-get install -y docker.io sudo systemctl start docker sudo systemctl enable docker # 2. 添加 NVIDIA 容器运行时仓库 distribution$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update # 3. 安装 nvidia-container-toolkit sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker # 4. 验证安装运行一个测试容器 sudo docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi如果最后一条命令成功输出 GPU 信息说明环境配置正确。2.2 获取项目代码与模型权重假设 Kimi K3 的项目仓库地址为https://github.com/example-org/kimi-k3。# 克隆项目代码到本地 git clone https://github.com/example-org/kimi-k3.git cd kimi-k3 # 查看项目结构通常会有 README.md, docker/, serving/ 等目录 ls -la模型权重文件通常不会直接放在 Git 仓库中而是通过额外的脚本或指引从云存储如 Hugging Face Model Hub、阿里云 OSS 等下载。你需要仔细阅读项目的README.md或DOWNLOAD.md文件。# 假设项目提供了下载脚本 # 请务必根据项目实际说明操作以下为示例 chmod x scripts/download_model.sh ./scripts/download_model.sh --model-name kimi-k3-28b-quantized关键点下载模型权重是耗时最长的步骤请确保网络稳定存储空间充足。文件可能被分割成多个部分需要合并。3. 构建与启动推理服务不同的项目可能使用不同的推理后端如 vLLM、TGI (Text Generation Inference) 或自定义服务。我们以常见的 vLLM 部署 OpenAI 兼容 API 为例。3.1 使用 Docker Compose 启动服务许多项目会提供docker-compose.yml文件来简化部署。如果项目提供了这是最推荐的方式。# 示例 docker-compose.yml (内容需根据项目实际调整) version: 3.8 services: kimi-k3-api: image: vllm/vllm-openai:latest container_name: kimi-k3-server runtime: nvidia deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] volumes: - ./models:/models # 将本地模型目录挂载到容器内 - ./data:/data ports: - “8000:8000” command: --model /models/kimi-k3-28b --served-model-name kimi-k3 --tensor-parallel-size 4 # 张量并行度根据 GPU 数量调整 --max-model-len 8192 --api-key “your-api-key-here” # 可选设置 API 密钥 environment: - HF_HOME/data - VLLM_PORT8000启动服务sudo docker-compose up -d使用docker logs -f kimi-k3-server查看启动日志等待出现 “Uvicorn running on ...” 或类似信息表示服务已就绪。3.2 直接使用项目提供的启动脚本如果项目没有 Docker Compose 文件但提供了启动脚本通常需要先构建或拉取一个包含依赖的 Docker 镜像然后运行。# 示例使用项目自带的启动脚本 # 脚本内部可能封装了复杂的 docker run 命令 ./scripts/start_server.sh --gpus 4 --model-path ./models/kimi-k33.3 关键启动参数解析无论以何种方式启动以下参数对大型模型部署至关重要参数含义典型值/建议--model模型权重文件的路径容器内路径。/models/kimi-k3--tensor-parallel-size张量并行度通常等于使用的 GPU 数量。用于将模型层拆分到多个 GPU 上。2, 4, 8 (根据 GPU 数量)--max-model-len模型支持的最大上下文长度Token 数。8192, 16384, 32768--dtype加载模型的数据类型影响精度和显存占用。auto会自动选择。auto,half(FP16),bfloat16--quantization量化方法大幅减少显存占用但可能轻微影响质量。awq,gptq,squeezellm--api-key设置 API 密钥启用简单的访问控制。自定义字符串--portAPI 服务监听的端口。8000重要提示--tensor-parallel-size必须能被模型的总层数整除且需要与 GPU 数量匹配。如果启动失败并提示与并行相关的错误请检查此参数。4. 验证服务与基础 API 调用服务启动成功后默认会提供一个 OpenAI 兼容的 API 端点通常是http://localhost:8000/v1。我们可以使用curl或编写简单的 Python 脚本来测试。4.1 检查服务健康状态curl http://localhost:8000/health预期返回一个简单的 JSON 响应如{“status”: “healthy”}。4.2 调用聊天补全 API这是最常用的接口。创建一个 Python 测试脚本test_api.pyimport requests import json # 配置 API 端点 API_BASE “http://localhost:8000/v1” API_KEY “your-api-key-here” # 如果启动时设置了 api-key headers { “Content-Type”: “application/json”, } if API_KEY: headers[“Authorization”] f“Bearer {API_KEY}” # 构建请求数据 data { “model”: “kimi-k3”, # 与启动时的 --served-model-name 一致 “messages”: [ {“role”: “system”, “content”: “You are a helpful assistant.”}, {“role”: “user”, “content”: “请用中文介绍一下你自己。”} ], “max_tokens”: 100, “temperature”: 0.7, } # 发送请求 try: response requests.post(f“{API_BASE}/chat/completions”, headersheaders, jsondata, timeout30) response.raise_for_status() # 检查 HTTP 错误 result response.json() print(“Response:”, json.dumps(result, indent2, ensure_asciiFalse)) # 提取回复内容 reply result[“choices”][0][“message”][“content”] print(“\nAssistant:‘s reply:”, reply) except requests.exceptions.RequestException as e: print(f“Request failed: {e}”) if hasattr(e, ‘response’) and e.response is not None: print(“Error response:”, e.response.text)运行脚本python test_api.py如果一切正常你将看到模型生成的自我介绍。4.3 验证流式输出对于长文本生成流式输出可以提升用户体验。修改请求增加“stream”: true参数并迭代处理返回的数据块。data[“stream”] True response requests.post(f“{API_BASE}/chat/completions”, headersheaders, jsondata, streamTrue, timeout60) for line in response.iter_lines(): if line: decoded_line line.decode(‘utf-8’) if decoded_line.startswith(‘data: ‘): json_str decoded_line[6:] # 去掉 ‘data: ‘ 前缀 if json_str ‘[DONE]‘: break try: chunk json.loads(json_str) delta chunk[“choices”][0][“delta”] if “content” in delta: print(delta[“content”], end“”, flushTrue) except json.JSONDecodeError: pass print() # 换行5. 部署常见问题与深度排查部署大规模模型时几乎必然会遇到各种问题。以下是按排查顺序整理的常见问题清单。5.1 服务启动失败类问题问题现象可能原因检查与解决步骤Docker 容器启动后立即退出日志显示CUDA error,OutOfMemory或Failed to import ...1. GPU 驱动/CUDA 版本不兼容。2. 显存不足。3. Python 依赖版本冲突。1. 在宿主机运行nvidia-smi和nvcc --version确认驱动和 CUDA 版本。确保 Docker 镜像的 CUDA 版本与之兼容。2. 使用docker run --gpus all --rm -it your_image nvidia-smi在容器内检查 GPU 是否可见及显存。3. 尝试减少--tensor-parallel-size。如果使用量化确认是否正确加载了量化后的权重。4. 查看完整错误日志搜索ImportError可能需要调整requirements.txt中包的版本。启动时卡在Loading model weights...长时间无响应1. 模型权重文件损坏或路径错误。2. 存储 I/O 速度过慢如使用机械硬盘。3. 模型文件格式不被识别。1. 检查挂载的模型路径是否正确权重文件是否存在且完整可通过 MD5 校验和确认。2. 将模型文件放在 SSD 上。3. 确认模型格式如 Hugging Face 格式、Safetensors 格式确保推理引擎支持。日志提示ValueError: The model‘s max position embeddings ...模型配置中的最大序列长度与启动参数--max-model-len不匹配。查阅模型的技术报告或配置文件如config.json找到max_position_embeddings的值将--max-model-len设置为小于或等于该值。服务启动成功但 API 调用返回404 Not Found或{error: {message: “Model does not exist”}}1. API 请求中的model字段名称与服务器注册的名称不匹配。2. 模型加载失败但服务进程仍在运行。1. 检查启动日志确认服务注册的模型名称--served-model-name或日志中的model_name。确保请求中的model字段与之完全一致。2. 查看服务日志确认模型加载阶段是否有警告或错误。5.2 API 调用与推理类问题问题现象可能原因检查与解决步骤请求超时Timeout1. 首次生成需要编译内核耗时较长。2. 输入序列过长或生成参数max_tokens设置过大。3. 硬件资源不足计算缓慢。1. 首次请求给予更长的超时时间如 120 秒。2. 调整请求参数减少max_tokens或对长输入进行分段。3. 监控 GPU 利用率 (nvidia-smi)确认是否达到瓶颈。考虑使用更高效的量化版本。返回内容乱码、重复或无意义1. 生成参数如temperature,top_p设置极端。2. 模型权重可能存在问题。3. 输入数据格式错误。1. 使用默认参数temperature0.7, top_p0.9进行测试。2. 尝试一个已知有效的简单提示如 “11”验证模型基础能力。3. 确保请求的 JSON 格式正确特别是messages数组的结构。流式响应中断或不完整1. 网络连接不稳定。2. 客户端处理流数据的代码有缺陷。3. 服务器端推理进程异常。1. 在本地环境测试排除网络问题。2. 使用标准的 OpenAI SDK 或本文提供的流式处理代码示例。3. 检查服务器日志看是否有推理错误。提示“你和 kimi 聊得太长啦新建会话后再聊天试试吧”或类似内容这是模型自身针对长对话或特定场景生成的“安全”或“规则”回复并非服务错误。这属于模型行为层面。可以尝试在system消息中明确指令或调整对话历史的管理策略。5.3 性能与优化问题吞吐量低检查是否启用了批处理--max-num-batched-tokens,--max-num-seqs。增加这些值可以提升 GPU 利用率但会增加延迟。显存溢出OOM这是部署大模型最常见的问题。解决方案包括使用量化这是最有效的手段。寻找项目的 GPTQ、AWQ 或 FP8 量化版本模型。调整并行策略结合使用张量并行--tensor-parallel-size和流水线并行如果支持。启用 PagedAttentionvLLM 等引擎默认启用能有效管理 KV Cache。减少max-model-len根据实际需要调整上下文长度。首次生成慢vLLM 等引擎在首次处理新形状的请求时会进行算子编译后续请求会变快。这是正常现象。6. 生产环境部署建议与安全考量将 Kimi K3 用于开发测试和投入生产环境有巨大差异。以下是在生产环境中部署需要考虑的关键点。6.1 基础设施与监控高可用单点服务不可取。考虑使用 Kubernetes 部署多个副本并配置负载均衡器如 Nginx和健康检查。资源隔离为模型服务分配固定的 GPU 和 CPU 资源避免与其他服务争抢。监控告警必须监控 GPU 使用率、显存占用、请求延迟P50, P99、吞吐量QPS和错误率。集成 Prometheus 和 Grafana 是常见做法。日志聚合将服务的访问日志、错误日志集中收集到 ELK 或 Loki 等系统中便于排查问题。6.2 安全与访问控制API 密钥务必使用--api-key启动参数并在所有客户端请求的Authorization头中携带。不要将服务暴露在公网而不设防。网络隔离将模型服务部署在内网通过 API 网关或反向代理如 Nginx对外提供访问并在网关上实施限流、鉴权、审计等策略。输入输出过滤在网关或服务层对用户输入进行基本的过滤和长度限制防止提示词注入攻击。对模型输出也可进行必要的后处理和安全审查。6.3 模型与配置管理配置外置不要将模型路径、密钥、并行度等参数硬编码在启动命令或脚本中。使用环境变量或配置文件如config.yaml进行管理便于不同环境开发、测试、生产切换。版本化对模型权重文件和推理服务代码进行版本化管理。任何更新都应有明确的版本标签和回滚方案。预热在流量到来之前可以发送一些预热请求触发内核编译避免第一个真实用户请求体验过差。部署一个像 Kimi K3 这样规模的模型是一项复杂的系统工程成功的关键在于细致的准备、对参数的理解以及系统化的排错能力。从按照官方文档配置环境开始遇到问题时优先检查日志、验证硬件资源、核对参数配置并善用社区和项目本身的 Issue 讨论区。随着你对整个部署链路的熟悉可以进一步探索模型微调、多模型路由、动态批处理等高级主题从而真正让这个大模型在你的业务场景中发挥价值。

相关新闻

BetterGI终极指南:如何用计算机视觉技术解放你的原神双手

BetterGI终极指南:如何用计算机视觉技术解放你的原神双手

BetterGI终极指南:如何用计算机视觉技术解放你的原神双手 【免费下载链接】better-genshin-impact 📦BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 …

2026/10/10 10:55:21 阅读更多 →
ContextMenuManager:Windows右键菜单管理的专业解决方案

ContextMenuManager:Windows右键菜单管理的专业解决方案

ContextMenuManager:Windows右键菜单管理的专业解决方案 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾经被Windows右键菜单中那些杂乱无章…

2026/10/10 10:55:14 阅读更多 →
告别复杂配置:小熊猫Dev-C++如何让C++编程在5分钟内从零开始

告别复杂配置:小熊猫Dev-C++如何让C++编程在5分钟内从零开始

告别复杂配置:小熊猫Dev-C如何让C编程在5分钟内从零开始 【免费下载链接】Dev-CPP A greatly improved Dev-Cpp 项目地址: https://gitcode.com/gh_mirrors/dev/Dev-CPP 你是否曾因C开发环境配置的复杂性而望而却步?是否厌倦了需要数小时才能搭建…

2026/10/10 12:03:31 阅读更多 →

最新新闻

多Agent技能管理实战:用GNU Stow和chezmoi建立唯一事实源

多Agent技能管理实战:用GNU Stow和chezmoi建立唯一事实源

1. 事故现场:同一个 skill,怎么可能存了三份上半年我在团队里搭了一套多 agent 的日常工具链,角色也不复杂:一个负责代码评审,一个负责日志排查,一个负责数据查询。最开始为了赶进度,每个 agent…

2026/10/12 12:29:44 阅读更多 →
MyEclipse 2021安装配置与避坑指南:JDK、Tomcat及编码排错

MyEclipse 2021安装配置与避坑指南:JDK、Tomcat及编码排错

简介:MyEclipse 2021.5.24a 是面向 Java 开发者的一体化 IDE 资源包,覆盖 Java SE/EE/ME 桌面应用与 Web 开发场景,也适合使用 Spring、Struts、Hibernate、Tomcat、GlassFish 以及 MySQL 等数据库连接的企业级项目,初学者搭建环境…

2026/10/12 12:29:44 阅读更多 →
HTTP与RPC接口测试实战:从协议差异到用例设计与线上排错

HTTP与RPC接口测试实战:从协议差异到用例设计与线上排错

做接口测试这几年,我把 Postman、Jmeter、Apifox、grpcurl 这些工具换了一轮,最后发现工具只是表面,真正决定测试质量的是你对 HTTP 和 RPC 这两套协议的理解深度。很多人觉得接口测试就是发个请求、看个状态码,真到线上出问题的时…

2026/10/12 12:29:44 阅读更多 →
Windows Server 2012多用户远程桌面配置:会话原理与故障排查

Windows Server 2012多用户远程桌面配置:会话原理与故障排查

简介:Windows Server 2012 默认每个用户最多只允许两个远程会话,多人同时登录常需通过组策略手动调整默认限制。配置文档面向系统管理员与 IT 运维人员,专门解决多用户远程桌面接入的问题,覆盖从启用远程桌面到设置最大连接数的关…

2026/10/12 12:29:44 阅读更多 →
二阶常系数线性微分方程:特征方程与待定系数法全解析

二阶常系数线性微分方程:特征方程与待定系数法全解析

二阶常系数线性微分方程,这六个字只要出现在高等数学教材目录里,多半伴随着“特征方程”“待定系数”这些让初学者发怵的概念。但说实话,这门课在实际问题里的地位比很多人想的重要得多——弹簧怎么振动、电路怎么衰减、控制系统的响应曲线长…

2026/10/12 12:29:44 阅读更多 →
open-code-review:结构化代码评审工具的设计与落地实践

open-code-review:结构化代码评审工具的设计与落地实践

1. 从"代码评审"这四个字说起:为什么值得单独造一个工具代码评审这件事,几乎每个写过团队项目的人都经历过。但绝大多数人对它的印象并不好——要么是走个形式点个"同意",要么是评审意见散落在聊天记录里找不回来&#x…

2026/10/12 12:28:43 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器: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 阅读更多 →