- 博客(208)
- 收藏
- 关注
原创 【代码阅读 SOP】模型训练代码如何读?关键环节有哪些?
这篇文章系统性地总结了机器学习模型训练的完整流程,围绕数据流转、模型计算和优化迭代三大核心逻辑展开。文章从数据准备与预处理、模型结构与前向传播、损失函数、优化器与参数更新、训练循环、验证与评估、训练技巧与正则化、日志与模型保存等8个关键环节进行详细解析。每个环节都列举了需要关注的核心要点,如数据加载方式、网络架构选择、损失函数匹配、优化器参数设置、训练循环结构、评估指标选取等,并强调通过"数据输入→模型计算→损失生成→参数调整→结果评估"的因果链来理解整个训练流程。文章建议通过绘制流程图
2025-09-26 11:51:09
520
原创 【附代码】Hugging Face 大型数据集上传完全指南
最近在向 Hugging Face 上传一个包含几千个 GLB 文件(总计 133GB)的 3D 模型数据集时,遇到了一系列看似成功但实际失败的问题。经过深入分析和调试,终于理解了 Hugging Face 数据集上传的完整机制。本文将分享这次实战经验,希望能帮助其他开发者避免类似的困惑。理解双重机制:LFS 对象上传 + Git 提交推送都是必需的不要被 “done” 误导:LFS 上传完成不等于整个上传流程完成始终验证状态:使用git status确认所有更改都已推送分步执行:先,再。
2025-09-25 17:37:26
964
原创 【3DV 进阶-3】Hunyuan3D2.1 训练代码详细理解之-Flow matching 训练 loss 详解
x1(数据点): 目标分布的样本,形状与模型输出一致。在本项目里就是 VAE 对 surface 编码得到的潜变量 latents(即要“生成/重建”的对象)。x0(噪声起点): 与 x1 同形状的标准正态随机张量 th.randn_like(x1),代表从高斯先验出发的“源分布”。t(时间标量): 每个样本一个标量,表示在“从 x0 走到 x1”的路径上的位置。
2025-09-11 16:21:56
718
原创 【3DV 进阶-2】Hunyuan3D2.1 训练代码详细理解下-数据读取流程
代码位置:/path/Hunyuan3D-2.1/hy3dshape/hy3dshape/data/dit_asl.py作为核心的数据模块,定义了训练和验证过程中所需的数据转换和加载逻辑:...在__init__方法中,主要定义了图像的预处理流程,包括转换为张量、调整大小和标准化等操作,这些操作会应用于后续加载的图像数据。对于训练数据加载器,可以看到,无论是训练还是验证,都使用了作为数据集,并通过PyTorch的DataLoader进行封装,实现了批量加载、多进程处理等功能。iter。
2025-09-09 21:20:30
1050
原创 【3DV 进阶-1】Hunyuan3D2.1 训练代码详细理解上-模型调用流程
补充:instantiate_from_config 按 target 动态实例化。
2025-09-09 15:52:30
898
原创 【3D 入门-9】通过 Hunyuan3D2.1 的代码来理解 SDF 和 marching cubes(下)
本文则介绍详细的水密化(Watertight)和Mesh 采样过程。回归正题~ 先高度总结下如何得到 watertight mesh, surface.npz 和 sdf.npz 的。
2025-09-05 22:24:42
1096
原创 【3D 入门-8】通过 Hunyuan3D2.1 的代码来理解 SDF 和 marching cubes(上)
本文通过 Hunyuan3D2.1 的代码,进一步理解 SDF 和 marching cubes。示例代码仓库:https://github.com/Tencent-Hunyuan/Hunyuan3D-2.1代码具体文件:/Hunyuan3D-2.1/hy3dshape/tools/watertight/watertight_and_sample.py。
2025-09-05 17:17:46
908
原创 【3D 入门-7】理解 SDF(Signed Distance Field) 不是什么?与相对坐标的区别
SDF的本质是“带方向的距离场”,它用数学方式将空间点与形状表面的关系转化为可计算的数值,这是相对坐标无法直接表达的。相对坐标是SDF计算中的中间量(如计算点到球心的距离时需要相对坐标),但SDF的核心价值在于通过“距离+符号”高效描述形状的内外分布,这也是它在3D算法中不可替代的原因~
2025-09-04 16:39:06
324
原创 【3D 入门-6】大白话解释 SDF(Signed Distance Field) 和 Marching Cube 算法
1. 基础概念SDF是一种描述空间中每个点与某个形状距离的数学工具。对于空间中的任意一点,SDF会计算它到某个物体表面的最短距离,并且用“正负号”表示点在物体的内部还是外部:如果点在物体外部,距离为正数;如果点在物体内部,距离为负数;如果点正好在物体表面上,距离为0。举个例子比如一个半径为1的球体,球心在原点(0,0,0)。SDFPx2y2z2−1SDFPx2y2z2−1当P在球外时(比如(2,0,0)),距离是2-1=1(正数);
2025-09-04 16:22:37
1008
原创 【3D 入门-5】trimesh 极速上手之 Hunyuan3D-2.1 中的“非水密网格“处理流程
【3D入门-指标篇上】3D 网格重建评估指标详解与通俗比喻【3D入门-指标篇下】 3D重建评估指标对比-附实现代码【3D 入门-3】常见 3D 格式对比,.glb / .obj / .stl / .ply【3D 入门-4】trimesh 极速上手之 3D Mesh 数据结构解析(Vertices / Faces)【3D 入门-5】trimesh 极速上手之 3D Mesh 数据结构解析(Vertices / Faces)https://github.com/Tencent-Hunyuan/Hunyuan3D
2025-09-03 15:17:16
471
原创 【3D 入门-4】trimesh 极速上手之 3D Mesh 数据结构解析(Vertices / Faces)
定义:vertices 是3D空间中的点坐标每个顶点用 坐标表示形状:,其中 N 是顶点数量示例:2. Faces(面片)定义:faces 是由顶点索引组成的三角形面片每个面片由3个顶点索引定义形状:,其中 M 是面片数量示例:3. 顶点和面片的关系索引对应:可视化理解:4. 为什么这样设计?内存效率:拓扑结构:5. 在代码中的具体应用网格分割:为什么顶点不分割?6. 实际例子:立方体7. 在3D处理中的重要性几何计算:渲染和可视
2025-09-02 17:11:29
419
原创 【3D 入门-3】常见 3D 格式对比,.glb / .obj / .stl / .ply / .npz
存储效率.glb.stl.ply.obj(二进制格式普遍优于文本格式)。功能丰富度.glb(支持动画、内置材质) >.ply(自定义属性) >.obj(基础材质) >.stl(仅几何)。行业适配.obj.stl.ply.glb实际应用中,格式选择需结合具体需求:若追求兼容性和简单几何,选.obj或.stl;若需复杂属性,选.ply;若面向web或实时场景,.glb是最优解(目前已成为web3D的事实标准)。
2025-09-02 17:05:30
1033
原创 【3D入门-指标篇上】3D 网格重建评估指标详解与通俗比喻
通过这些指标的“多维度体检”,可全面衡量3D服装重建模型的“形似”(几何)与“神似”(表面细节)程度。
2025-08-29 21:24:42
530
原创 【工具篇2】Gitee导入github repo作为持续的镜像站,自建 GitHub 镜像仓库详细步骤
在 Gitee 上自建 GitHub 镜像仓库,可以解决第三方镜像站不稳定的问题,尤其适合需要长期维护的项目(如需要的LoRA-Torch。
2025-08-27 16:14:31
1316
原创 【工具篇】github/huggingface 镜像源总结
代码克隆→ 简单替换URL,全流程Git支持。模型/数据下载→ 大文件优化,支持直接下载。包管理加速:清华源 → 国内最稳定的pip/conda镜像,覆盖广泛。通过三者的组合使用,国内开发者可在无需VPN的情况下,高效获取GitHub代码、AI模型权重及开发依赖,大幅提升工作流效率。
2025-08-27 15:44:50
2979
原创 【3D Gen 入坑(1)】Hunyuan3D-Paint 2.1 安装 `custom_rasterizer` 报错完整排查
该文档详细介绍了Hunyuan3D-Paint 2.1安装过程中custom_rasterizer编译报错的完整解决方案。主要问题包括:pip隔离环境缺少PyTorch、CUDA 12.4与GCC 13不兼容、nvcc找不到正确的host compiler等。解决方案分为四步:1)安装匹配的GCC 11;2)配置编译器环境变量;3)禁用pip build-isolation;4)验证安装结果。文档还提供了常见错误排查表,并强调关键点:选择兼容的GCC版本、禁用pip隔离环境、正确设置CUDAHOSTCXX变
2025-08-11 21:22:02
1182
原创 Post-train 入门(2):Online RL 中的 GRPO 与 PPO,以及相关概念
本文系统介绍了PPO等主流强化学习算法的核心概念,通过对比表格分析其定义、特点、优劣势及典型应用场景。重点区分了在线RL(需实时交互)和离线RL(依赖静态数据)的不同模式,指出PPO、DDPG等算法可通过改进适配离线训练,而A2C、GRPO则必须在线运行。这些算法构成了现代强化学习的核心工具集,选择需综合考虑任务类型、模型规模和计算资源。
2025-08-06 11:58:28
654
原创 Post-train 入门(1):SFT / DPO / Online RL 概念理解和分类
摘要: 后训练(Post-train)方法主要包括监督微调(SFT)、直接偏好优化(DPO)和在线强化学习(Online RL)。SFT依赖人工标注数据,简单高效但泛化能力有限;DPO通过偏好数据优化模型,省去奖励模型训练但标注成本高;Online RL通过实时反馈动态优化策略,适应复杂任务但计算成本高。此外,扩散模型的对齐方法(如DPO和Online RL)专注于优化生成质量,不包括SFT。具体对比可参考附图和分类表格。
2025-08-06 11:31:59
699
原创 【解决✅】cursor / vs code 和 tmux 命令冲突,cursor / vs code 无法识别 tmux指令?
使用 tmux 的常见命令如 ctrl + b + w, ctrl + b + ⬆️,都会遇到左下角提示如图所示。尝试了(1)更改快捷键后(2),新增 settings.json 来覆盖原快捷键设置的 json 都无果🥺。(3)尝试删除后,ctrl + b + w 终于 work 了‼️困扰了半个月终于解决‼️,最后发现快捷键中的 tmux keybinding 指向了这个插件。
2025-06-24 14:00:00
322
原创 Pytorch Lightning 进阶 2 - 正向传播和反向传播具体的代码位置
1. 正向传播在 self.step(batch) 中的模型前向计算,2.反向传播在 trainer.fit() 内部。
2025-06-23 17:19:15
659
原创 Pytorch Lightning 进阶 1 - 梯度检查点(Gradient Checkpointing)
梯度检查点是深度学习中的显存优化技术,1. 正向传播时,模型不会保存所有注意力图和隐藏层输出。2. 反向传播时,PyTorch会利用检查点重新计算这些值,从而减少显存占用。
2025-06-23 17:04:14
895
原创 Flux 中的 cross-attention / mm-attention / joint-attention 详解,附代码和图片参考
重点解读了joint-attention机制,它由四部分组成:图像自注意力、图像-文本交叉注意力、文本-图像交叉注意力和文本自注意力。
2025-06-09 11:21:00
848
原创 【Flux 中的 attention】缩放点积注意力机制的具体实现
本文介绍了一个基于PyTorch的注意力机制实现代码。该代码实现了缩放点积注意力机制,包含三个核心概念:Query(查询当前关注信息)、Key(可被查询信息)和Value(实际使用信息)。处理流程包括:计算Query和Key的点积,应用缩放因子与注意力偏置,通过softmax获取权重后与Value加权求和。该机制优势在于动态关注信息、捕捉长距离依赖、高效并行计算及良好的可解释性。代码来自GitHub上的attention-map-diffusers项目。
2025-06-09 10:47:20
291
原创 【Python 进阶3】常见的 call 和 forward 区别
_call__是 Python 的通用机制,用于让对象可以像函数一样被调用,适用于各种需要可调用对象的场景。forward是深度学习框架中的特定概念,用于定义模型的前向传播过程,必须通过实例调用(而非直接调用)以确保框架的额外功能正常工作。两者虽然都与"调用"相关,但属于不同的抽象层次,解决的是不同场景下的问题。
2025-06-02 19:31:53
532
原创 【Python 进阶】抽象基类(Abstract Base Class)
本文的示例代码来源于 break-a-scene.abc是 Python 标准库中的一个模块,全称是 “Abstract Base Classes”(抽象基类)。它提供了一种定义抽象类和抽象方法的机制。在以下代码中,类继承自abc.ABC,表示这是一个抽象基类。抽象基类的作用:定义了一个接口规范强制子类必须实现某些方法不能直接实例化,必须通过子类来实现在代码中的具体应用:装饰器标记forward方法为抽象方法任何继承的子类必须实现forward方法。
2025-05-29 22:25:08
1250
原创 【Stable Diffusion 1.5 】在 Unet 中每个 Cross Attention 块中的张量变化过程
特征图保存图像语义特征,通过UNet架构逐层下采样(如512→64),而注意力图作为关系矩阵需更高计算效率,通常在16×16分辨率处理。
2025-05-29 20:13:23
1224
原创 【diffusers 进阶之 PEFT 入门(五)】LoRA 权重如何接着训练?踩坑总结和解决方案
通过使用 PEFT 的标准机制并注意初始化顺序,我们可以避免训练状态被意外重置的问题。这个经验也提醒我们,在深度学习工程实践中,有时看似简单的操作顺序调整可能会对训练结果产生重大影响。保持良好的代码组织和清晰的状态管理可以帮助我们避免类似的问题。:确保加载时使用的配置(如 alpha 值)与训练时保持一致,这对模型行为的一致性很重要。:PEFT 库提供了标准的 adapter 加载机制,能够正确处理权重的加载和初始化。要特别注意初始化和加载的顺序。在我们的解决方案中,实际的 LoRA 加载是通过。
2025-04-30 17:08:37
1612
原创 【Qwen2.5-VL 踩坑记录】本地 + 海外账号和国内账号的 API 调用区别(阿里云百炼平台)
这行代码在调用通义千问API之前,设置了API的基础URL。这个URL是阿里云提供的国际版通义千问API的端点地址。API密钥与特定区域或端点绑定(例如,一个密钥可能只能用于中国区,另一个只能用于国际区)需要根据不同的API密钥使用不同的端点URL(例如,国内版和国际版)本人的服务器在香港,采用海外版的 API 时,需要进行如下。:API的根路径,所有API请求都会基于这个URL构建。:API服务器的URL地址,客户端通过此地址访问服务。:配置RESTful API客户端的地址和行为。
2025-04-23 18:47:49
905
原创 【扩散模型(十三)】Break-A-Scene 可控生成,原理与代码详解(中)Cross Attn Loss 代码篇
上篇介绍了 Break-A-Scene 的整体技术要点,本文则分析其对应的关键代码。方法采用的 base model 是 stable-diffusion-2-1-base。之前说了这个方法主要是 Textual Inversion + Dream Booth(从训练到的模型参数),再从 Attention loss 的角度来看,还参考了 P2P (Prompt-to-Prompt Image Editing。
2025-04-16 22:03:19
829
原创 【已解决】ModuleNotFoundError: No module named ‘imwatermark‘
配置 ConceptAttention 环境, https://github.com/helblazer811/ConceptAttention。参考论坛:https://github.com/CompVis/stable-diffusion/issues/332。
2025-04-16 13:00:53
479
2
原创 【扩散模型(十二)】Break-A-Scene 可控生成,原理与代码详解(上) 原理篇
这个项目名为 “Break-A-Scene: Extracting Multiple Concepts from a Single Image”,发表于 SIGGRAPH Asia 2023,旨在从单张图像中提取多个概念,并使用自然语言引导在各种上下文中重新合成这些概念或它们的组合。一句话解释:Textual Inversion(TI) + DreamBooth(DB) + Loss(下图的 3 和 4)
2025-04-11 16:04:23
1026
原创 【diffusers 进阶之 PEFT 入门(四)】load_lora_weight 的踩坑总结以及解决方案
那如果之前未设置 adapter_name 时训练获得的权重,就是想用这个权重推理怎么办?因此可以写出将 lora 权重对应地更新到原模型权重上的代码,如下所示。本文作者的 lora 的 key 如下,从这里可以知道去掉。通过以下代码获取 lora 的 key。就能够对应会我们原模型的参数。此时推理即可获得正常结果。
2025-04-10 20:09:11
1290
原创 【diffusers 进阶(十五)】dataset 工具,Parquet和Arrow 数据文件格式,load dataset 方法
Parquet文件采用列式存储格式,与CSV等行式文件不同。由于效率更高且查询响应更快,大型数据集通常存储为Parquet格式。Arrow文件采用内存列式存储格式,与CSV等行式格式和未压缩的Parquet格式不同。
2025-04-03 19:51:22
1771
原创 【diffusers 进阶(十四)】权重读取,查看 Lora 具体加在哪里和 Rank ‘秩’ 是多少?以 OminiControl 为例
读取并打印 lora_A 的输出特征数(即 rank)或者 lora_B 的输入特征数即可。打印出想要的权重后,可以清楚地看出 lora 加在哪些层上。
2025-04-02 20:20:28
931
原创 【huggingface 数据下载】ssh / https 不同的下载流程,hf 镜像下载注意事项
一直卡在 Updating files 后。这会显示系统当前允许监视的最大文件数。
2025-04-01 11:53:38
751
原创 浮点数例外 (核心已转储), Floating point exception (核心已转储)
报错发生的位置:/path/diffusers/models/embeddings.py 的 1309 行,sample = self.linear_2(sample)但奇怪的是,报错不会显示问题出现在哪一行,而是直接中断,提示 Floating point exception (核心已转储)项目:https://github.com/RedAIGC/Flux-version-LayerDiffuse。改为了 torch_dtype=torch.float32。
2025-04-01 11:33:06
342
原创 【diffusers 进阶之 PEFT 入门(三)】BaseTunerLayer 与 set_adapter
这种设计使得 PEFT 可以在同一个模型中管理多个适配器,并轻松切换它们的活跃状态。是 Python 类方法中的第一个参数,表示类的实例本身。在 PEFT 的上下文中,这些属性是存储适配器层的字典。是 Python 内置函数,用于获取对象的属性。
2025-03-27 15:41:30
819
2
原创 【diffusers 进阶之 PEFT 入门(二)】LoraConfig 如何处理 lora_config 参数的?
这种设计允许用户通过简单的配置字典灵活地控制 LoRA 适配器的行为,而不需要直接修改模型代码。会将字典中的键值对作为参数传递给。对于您提供的复杂正则表达式。
2025-03-27 15:03:18
1317
CLIP 模型从 .pt 到 .onnx 的 python 转化代码
2024-05-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人