编辑
2025-05-13
深度学习
00

训练模型时遇到loss为NaN的现象及解决方法

在深度学习模型训练过程中,遇到loss变成NaN(Not a Number)是一个常见的问题。这种情况通常表明训练过程中出现了数值不稳定性,需要及时处理以避免模型训练失败。以下是这种现象的原因分析和解决方法。

编辑
2025-05-13
深度学习
00

一篇很好的解读: https://zhuanlan.zhihu.com/p/20844750193

GRPO:基于群组相对优化的强化学习算法

1. GRPO概述

GRPO (Group Relative Policy Optimization) 是一种用于大型语言模型(LLM)和视觉语言模型(VLM)训练的强化学习算法。它是一种相对优势计算方法,通过对同一输入生成多个输出回答,然后计算相对优势进行优化。

相比于传统的PPO等算法,GRPO的主要特点是:

  • 不需要价值网络(Value Network),简化了训练过程
  • 通过相对评估减少了回报的高方差问题
  • 特别适合处理离散奖励信号,如问答场景中的正确/错误奖励
  • 对同样的问题采样多次,通过组内相对比较学习更好的策略
编辑
2025-05-12
深度学习
00

PPO和DPO强化学习方法比较

PPO (Proximal Policy Optimization)

PPO是一种传统的强化学习方法,在RLHF (Reinforcement Learning from Human Feedback)中应用广泛:

  1. 基本组成

    • 策略模型(Actor):生成文本响应
    • 奖励模型(Reward Model):评估响应质量
    • 参考模型(Reference Model):限制与初始模型的偏离
  2. 训练流程

    • 策略模型生成回答
    • 奖励模型对生成的回答打分
    • 通过奖励信号更新策略模型
    • 使用KL惩罚项防止过度偏离参考模型
编辑
2025-05-12
深度学习
00

强化学习训练方法概览

LLaMA-Factory 实现了三种主要的强化学习训练方法:PPO、DPO、KTO,每种方法都针对大型语言模型的微调采用不同的策略。

1. PPO (Proximal Policy Optimization)

PPO 是一种基于策略梯度的强化学习算法,是最传统的 RLHF (Reinforcement Learning from Human Feedback) 方法。

原理

  • 使用策略模型生成回答
  • 使用奖励模型评估回答质量
  • 通过奖励信号更新策略模型,同时限制更新幅度以确保稳定性
编辑
2025-05-12
深度学习
00

直接偏好优化算法(DPO)详解

DPO算法简介

直接偏好优化(Direct Preference Optimization, DPO)是一种用于语言模型对齐的算法,由Rafailov等人在2023年提出,作为强化学习人类反馈(RLHF)的替代方案。DPO的目标与RLHF相同:使语言模型的输出更好地符合人类偏好,但DPO通过简化流程,直接从人类偏好数据中优化模型,无需单独的奖励模型和复杂的强化学习过程。

为什么需要DPO?

  • 传统RLHF的痛点:RLHF依赖于奖励模型和强化学习(如PPO),这不仅增加了训练复杂性,还容易引入不稳定性。例如,强化学习中的策略更新可能会导致模型性能波动。
  • DPO的优势:DPO直接利用偏好数据进行优化,避免了中间步骤,使得训练过程更加高效且稳定。
编辑
2025-05-12
深度学习
00

PPO算法介绍

什么是PPO算法?

近端策略优化(Proximal Policy Optimization, PPO)是一种基于策略梯度的强化学习算法,由OpenAI在2017年提出。PPO算法在保持训练稳定性的同时,能够获得较好的样本效率和性能表现。PPO的核心思想是通过限制策略更新的幅度,避免过大的策略变化导致性能崩溃。

PPO算法有两种主要变体:PPO-Penalty和PPO-Clip。在实际应用中,PPO-Clip因其实现简单且性能优越而被广泛采用。

编辑
2025-05-12
深度学习
00

1. 弹性权重整合(Elastic Weight Consolidation, EWC)

概述: EWC 通过在损失函数中添加一个正则化项,防止重要参数偏离先前任务的最优值。这个正则化项基于费舍尔信息矩阵,衡量每个参数对先前任务的重要性。

公式

L(θ)=Lnew(θ)+iλ2Fi(θiθi)2L(\theta) = L_{\text{new}}(\theta) + \sum_i \frac{\lambda}{2} F_i (\theta_i - \theta^*_{i})^2

其中 FiF_i 是费舍尔信息矩阵,θi\theta^*_{i} 是旧任务的最优参数。

代码示例

python
展开代码
import torch def ewc_loss(new_loss, model, fisher_matrix, old_params, lambda_ewc): ewc_penalty = 0 for param, fisher, old_param in zip(model.parameters(), fisher_matrix, old_params): ewc_penalty += torch.sum(fisher * (param - old_param).pow(2)) return new_loss + (lambda_ewc / 2) * ewc_penalty
编辑
2025-05-12
深度学习
00

Query改写的核心价值

解决原始Query的三大痛点

问题类型典型案例改写效果
信息残缺"这个功能怎么用?" → "CRM系统中客户画像功能的操作指南"补全关键实体
语义模糊"帮我查下数据" → "查询2024年6月华东区销售额(万元)"明确维度指标
表达歧义"苹果最新消息" → "Apple公司2024年Q3财报发布时间"消除指代歧义
编辑
2025-05-12
深度学习
00

一、选择 RAG 而非微调的主要原因

在我们项目中,选择 RAG 而不是直接微调 LLM,主要基于以下几个核心考量:

1. 外部知识动态更新的需求

  • 微调后的模型是“静态”的,一旦训练完成,新增知识需要重新训练或增量训练,成本高且周期长。
  • RAG 则通过检索模块引入外部知识库,可以实时或定期更新知识源,无需重新训练生成模型。

2. 避免灾难性遗忘(Catastrophic Forgetting)

  • 微调过程中,模型容易忘记预训练阶段学到的通用知识,特别是在数据分布不均衡或任务目标变化时。
  • RAG 不改变原始模型参数,仅通过检索增强上下文信息,因此保留了预训练模型的广泛知识基础。

3. 降低训练成本和资源消耗

  • 微调大型语言模型(如 Llama 3、ChatGLM、Baichuan 等)需要大量 GPU/TPU 和时间成本。
  • RAG 只需维护一个高效的检索系统和文档向量化流程,推理阶段即可实现知识增强。

4. 提高可解释性和可控性

  • 微调模型的输出难以追溯来源,缺乏透明度。
  • RAG 中检索到的文档片段可以直接展示给用户,提升结果的可信度和可审计性。

编辑
2025-05-09
深度学习
00

1.为什么叫InfoNCE损失

Information :表示该损失函数与信息论有关,用于最大化两个相关样本之间的互信息(mutual information)。

Noise-Contrastive Estimation (NCE) :最初由 Gutmann 和 Hyvärinen 提出的一种方法,用于通过区分真实数据和噪声样本来估计概率分布。InfoNCE 是 NCE 的一个变体,专门用于对比学习。

编辑
2025-05-09
深度学习
00

m-RoPE(多模态旋转位置编码)

1. 基本原理

m-RoPE是传统RoPE(旋转位置编码)在多模态场景下的扩展。传统RoPE处理的是一维序列,而m-RoPE专门设计用来处理包含图像和视频等视觉内容的多模态输入。

如代码中注释所述:

多模态3D旋转位置编码是1D旋转位置编码的扩展。输入嵌入序列包含视觉(图像/视频)嵌入和文本嵌入,或者仅包含文本嵌入。对于视觉嵌入部分,我们分别在时间、高度和宽度维度上应用旋转位置编码。这里我们将通道维度分为3个块,用于时间、高度和宽度旋转位置编码。对于文本嵌入部分,我们只应用1D旋转位置编码。

编辑
2025-05-09
深度学习
00
展开代码
docker run -it --entrypoint bash vllm/vllm-openai:latest

执行这个看到库的路径:

展开代码
root@4832fc8eb0e1:/app# python3 -c "import transformers; print(transformers.__file__)" /usr/local/lib/python3.12/dist-packages/transformers/__init__.py

我要改的是在:

展开代码
/usr/local/lib/python3.12/dist-packages/transformers/models/qwen2_5_vl/modeling_qwen2_5_vl.py
编辑
2025-05-09
Linux运维
00

📌 问题背景

在Ubuntu系统中,NVIDIA显卡驱动在内核升级后失效是一个常见问题,主要由以下原因引起:

  1. 未使用DKMS机制安装驱动:通过官方.run文件手动安装的驱动不会随内核更新自动重建模块;
  2. DKMS配置异常:即使通过仓库安装,若未正确注册DKMS,也会导致驱动无法适配新内核;
  3. 版本不兼容:某些新版内核可能需要更高版本的驱动支持。

本文将提供4种专业级解决方案,涵盖从长期稳定方案到临时应急措施,并附带故障排查与预防建议。

编辑
2025-05-08
Python
00

🧱 离线安装 Python 包的完整流程

🔗 一、联网机器:下载包及依赖

bash
展开代码
mkdir -p wheels cd wheels # 下载包及其所有依赖 pip download swanlab==0.5.7 -d wheels --no-cache-dir

✅ 示例包:swanlab==0.5.7
💡 替换为你需要的包名和版本

编辑
2025-05-08
深度学习
00

SharegptDatasetConverter 类解析

SharegptDatasetConverter是LLaMA-Factory中的一个核心数据处理组件,专门用于处理ShareGPT格式的对话数据(包括OpenAI格式)。这个转换器将各种形式的对话数据转换为统一的内部格式,方便后续处理。下面几个方面可以帮助你理解它的工作原理:

1. 角色标签映射

代码开始定义了一个tag_mapping字典,将数据中的角色标签(例如"user"、"assistant")映射到内部使用的枚举值。例如,对于OpenAI格式,它会将"user"映射到Role.USER.value,将"assistant"映射到Role.ASSISTANT.value等。这保证了不同数据集之间角色表示的一致性。

编辑
2025-05-08
Python
00

对三个不同文件夹中的图像进行相似度匹配,并将匹配成功的三张图像(每个文件夹各一张)拼接成一张横向长图保存。以下是详细的功能解析:


核心功能

  1. 图像匹配: • 从三个文件夹(yuantu原图、Effect_ox1效果图1、Effect_pf效果图2)中读取图片。

    • 通过计算图像的均方误差(MSE)衡量相似度,找到每个原图对应的最相似的两张效果图(分别来自两个效果图文件夹)。

    • 使用全局优化算法(迭代移除已匹配的图片)确保匹配的唯一性和最优性。

  2. 图像拼接: • 将匹配成功的三张图片(原图 + 效果图1 + 效果图2)横向拼接成一张长图。

    • 拼接时保持所有图片高度一致,宽度按原始比例缩放。

  3. 结果保存: • 将拼接后的图像保存到save_mse文件夹中,文件名按序号命名(如001.jpg)。

编辑
2025-05-08
算法刷题
00

一、补充的5个核心方向

在掌握了算法面试中最常见的几大类题型(如动态规划、DFS/BFS、贪心、字符串、树)之后,还有一些非常重要的补充知识点也常常出现在高频面试题中。以下是五大进阶方向及对应的必刷题目推荐。


编辑
2025-05-08
算法刷题
00

树(Tree)结构题目分类与详解

树(Tree) 是算法面试中非常核心的数据结构,广泛涉及遍历、递归、DFS/BFS、二叉搜索树(BST)、平衡树、字典树(Trie)等知识点。本文将对树类常见题型进行系统分类与经典题目解析,帮助你快速掌握解题思路。

编辑
2025-05-08
算法刷题
00

字符串算法题目分类与详解

字符串(String) 是算法面试中占比极高的题型,涉及模式匹配、子串/子序列、哈希计数、回文、滑动窗口等多个核心知识点。本文将对字符串常见题型进行系统分类与经典题目解析,帮助你快速掌握解题思路。


编辑
2025-05-08
算法刷题
00

贪心算法(Greedy Algorithm)系统分类与经典题型详解

贪心算法(Greedy Algorithm) 是一种在每一步选择中都采取当前状态下最优决策的算法思想,常用于解决最优化问题。其核心在于:局部最优解能否推导出全局最优解。

本文从基础概念到经典题型进行系统分类与解析,涵盖从入门到进阶的所有常见问题。


一、贪心算法的三大核心要素

  1. 贪心选择性质:每一步的局部最优选择能导致全局最优解
  2. 🔁 无后效性:当前的选择不会影响后续子问题的结构
  3. 高效性:时间复杂度通常为 O(n)O(n)O(nlogn)O(n \log n),优于动态规划