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),优于动态规划
2025-05-08
算法刷题
00

广度优先搜索(BFS)系统分类与经典题型详解

广度优先搜索(Breadth-First Search, BFS) 是一种基于队列实现的层次遍历算法,适用于最短路径、状态转移、连通性等问题。其核心思想是“层层扩展”,从起点出发,逐层访问所有可达节点。

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


一、BFS的三大核心要素

  1. 队列(Queue):存储待访问节点,保证先进先出(FIFO)的遍历顺序
  2. 🧭 已访问标记(Visited):避免重复访问(如哈希表、二维数组)
  3. 🔁 层数统计(Level):记录当前遍历的层数(用于最短路径问题)
2025-05-08
算法刷题
00

深度优先搜索(DFS)系统分类与经典题型详解

深度优先搜索(Depth-First Search, DFS) 是算法中解决树/图遍历、路径搜索、排列组合等问题的核心方法之一。其核心思想是“一条路走到底”的搜索策略,通常通过递归或显式栈实现。

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


一、DFS的三大核心要素

  1. 递归终止条件:何时结束当前分支的搜索

    示例:越界、找到目标、访问过

  2. 当前层处理:对当前节点或状态的修改

    示例:标记已访问、加入路径

  3. 向子问题递归:进入下一层搜索

    示例:遍历相邻节点、选择下一个数字

2025-05-08
算法刷题
00

动态规划(DP)系统分类与经典题型详解

动态规划(Dynamic Programming, DP) 是算法中解决最优化问题的核心方法之一。其核心思想是将原问题分解为多个重叠子问题,并通过记忆化存储避免重复计算。

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

2025-05-07
深度学习
00

基本推理

仓库:https://huggingface.co/google/siglip-so400m-patch14-384

下载仓库:

展开代码
./hfd.sh google/siglip-so400m-patch14-384 --local-dir ./google/siglip-so400m-patch14-384

懒得装环境,直接docker:

展开代码
docker run -it \ --gpus '"device=0"' \ -v ./google/siglip-so400m-patch14-384:/google/siglip-so400m-patch14-384 \ -p 8033:8033 \ --shm-size 32g \ kevinchina/deeplearning:llamafactory20250311-3 bash
2025-05-07
深度学习
00

【训练】Qwen2.5VL 多机多卡 Grounding Box定位(1):http://101.126.150.28:7878/post/2067

【训练】Qwen2.5VL 多机多卡 Grounding Box定位(2):http://101.126.150.28:7878/post/2094

之前的相关文章:

【深度学习】LLaMA-Factory微调sft Qwen2-VL进行印章识别

https://www.dong-blog.fun/post/1661

使用LLaMA-Factory微调sft Qwen2-VL-7B-Instruct

https://www.dong-blog.fun/post/1762

构建最新的LLaMA-Factory镜像

https://www.dong-blog.fun/post/1799

关于Grounding 如何不偏移的问题解决

看了一些帖子:

所以有一些关于 Qwen2.5VL Grounding 的结论:

  • 官方微调用的是这样的格式,所以在prompt中也无需特殊的格式/
json
展开代码
[ {"bbox_2d": [x1, y1, x2, y2], "label": "obj_name/description"}, {"bbox_2d": [x1, y1, x2, y2], "label": "obj_name/description"}, {"bbox_2d": [x1, y1, x2, y2], "label": "obj_name/description"}, ]
  • 官方还是这么做了,因为底层对28的切割性质,所以要这么做,不然真会偏一点: 在 Qwen2.5-VL 中,我们首先调整输入图像的大小,以确保其宽高为 28*n,然后使用调整后图像上的绝对坐标作为最终目标。

  • 使用 (左, 上), (右, 下) 坐标,不用归一化到0-1000.

  • 您好,根据您的描述,我怀疑问题出在 Qwen2-VL 和 Qwen2.5-VL 中 bbox 坐标的处理方式不同。具体来说,我们在 Qwen2.5-VL-7B 中现在使用的是绝对坐标,而不是 Qwen2-VL 中使用的相对坐标(后者被缩放到 [0,1000])。 例如,在 Qwen2-VL 中,640x640 图像中 [0, 0, 320, 320] 的边界框用 (0, 0), (500, 500) 表示。但在 Qwen2.5-VL 中,我们直接使用 [0, 0, 320, 320] 或 (0,0),(320,320)。此外,如果在图像增强过程中将图像尺寸调整为 1280x1280,则坐标现在应相应地扩展为 [0, 0, 640, 640]。

    由于 Qwen2.5-VL 使用绝对坐标进行训练,我建议在微调时也使用相同的绝对坐标系。如果您出于某种原因坚持使用相对坐标,可以延长训练时间,看看偏差问题是否会随着训练时间的延长而消失。

    供大家参考,详细坐标流程如下:

    调整图像大小,使高度和宽度为 28*n resized_w, resized_h = smart_resize(img_w, img_h) 相应地改变绝对坐标 new_bbox = bbox / np.array([img_w, img_h, img_w, img_h]) * np.array([resized_w, resized_h, resized_w, resized_h])) 如果使用绝对坐标后仍然观察到明显的 grounding 偏差,则另一个可能的问题在于图像的大小。如果图像非常大或非常小(例如,> 4k 4k 或 < 320 320),则模型很可能会输出有偏差的 bbox 结果。

  • 新版本的transformers才没有rope问题,安装: pip install git+https://github.com/huggingface/transformers

2025-05-07
工具使用
00

Python扩展包

在 VS Code 的扩展市场中,最核心的 Python 开发扩展是由 Microsoft 官方维护的 ms-python.python(名称直接叫 "Python")。以下是关键扩展的区分和推荐:

1. 必装的核心扩展 Python • 发布者: ms-python(Microsoft 官方)

• 功能:

• Python 语言基础支持(语法高亮、代码补全、调试等)。

• 集成 Python 解释器管理(切换虚拟环境、conda 等)。

• 提供 Jupyter Notebook 支持。

• 标识:扩展列表中直接显示为 "Python",且作者是 ms-python

2025-05-07
算法刷题
00

🚧 第一步:理解链表的结构

链表就像一列火车,每节车厢(节点)有两个部分:

  1. 值(val):比如存储的数字。
  2. 下一节的连接(next):指向下一节车厢的“钩子”(指针)。

在 Python 中,可以用类表示:

python
展开代码
class ListNode: def __init__(self, val=0, next=None): self.val = val # 值 self.next = next # 指向下一个节点的指针

例如,链表 1 -> 2 -> 3 就是三个节点,每个的“钩子”连向下一个。

2025-05-07
算法刷题
00

统计素数的常用方法详解

1. 什么是素数?

素数(质数) 是大于 1 的自然数,只能被 1 和它本身整除。

示例:

  • 素数:2, 3, 5, 7, 11, ...
  • 非素数:4, 6, 8, 9, ...

2025-05-06
Linux运维
00

在 VS Code 中连接虚拟机中的 Linux 终端,可以通过以下几种方法实现:

2025-05-03
自动控制
00

ADRC算法数学公式详解

{ESO:{e=z1yz˙1=z2β1ez˙2=z3β2e+b0uz˙3=β3eTD:{v˙1=v2v˙2=r0(v1v0)c0v2LSEF:{e1=z1v1e2=z2v2u0=k1e1k2e2u=u0z3b0\begin{cases} \text{ESO:} & \begin{cases} e = z_1 - y \\ \dot{z}_1 = z_2 - \beta_1 e \\ \dot{z}_2 = z_3 - \beta_2 e + b_0 u \\ \dot{z}_3 = -\beta_3 e \end{cases} \\ \text{TD:} & \begin{cases} \dot{v}_1 = v_2 \\ \dot{v}_2 = -r_0(v_1 - v_0) - c_0 v_2 \end{cases} \\ \text{LSEF:} & \begin{cases} e_1 = z_1 - v_1 \\ e_2 = z_2 - v_2 \\ u_0 = -k_1 e_1 - k_2 e_2 \\ u = \frac{u_0 - z_3}{b_0} \end{cases} \end{cases}

线性ADRC通常更容易调整参数,但在大扰动下可能性能不如非线性ADRC。

2025-05-02
深度学习ban
00

该文章已加密,点击 阅读全文 并输入密码后方可查看。

2025-05-02
深度学习
00

训练

项目地址:

https://github.com/hiyouga/EasyR1?tab=readme-ov-file#custom-dataset

拉取镜像:

展开代码
docker pull hiyouga/verl:ngc-th2.6.0-cu126-vllm0.8.4-flashinfer0.2.2-cxx11abi0

做一个镜像:

展开代码
FROM hiyouga/verl:ngc-th2.6.0-cu126-vllm0.8.4-flashinfer0.2.2-cxx11abi0 WORKDIR /workplace RUN git clone https://github.com/hiyouga/EasyR1.git WORKDIR /workplace/EasyR1 RUN pip install -e . -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple RUN pip install swanlab -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
2025-05-01
深度学习ban
00

该文章已加密,点击 阅读全文 并输入密码后方可查看。

2025-05-01
深度学习
00

grpo_config.py

GRPO配置参数文档

模型和参考模型参数

  • model_init_kwargs: dict[str, Any]None,默认值 None
    • 用于transformers.AutoModelForCausalLM.from_pretrained的关键字参数,当GRPOTrainermodel参数提供为字符串时使用。

数据预处理参数

  • remove_unused_columns: bool,默认值 False

    • 是否仅保留数据集中的"prompt"列。如果您使用的自定义奖励函数需要"prompts"和"completions"以外的任何列,应将此值保持为False
  • max_prompt_length: intNone,默认值 512

    • 提示的最大长度。如果提示长度超过此值,将从左侧截断。
  • num_generations: intNone,默认值 8

    • 每个提示生成的样本数。全局批次大小(num_processes * per_device_batch_size)必须能被此值整除。
  • temperature: float,默认值 0.9

    • 采样的温度。温度越高,生成的内容越随机。
  • max_completion_length: intNone,默认值 256

    • 生成内容的最大长度。
  • ds3_gather_for_generation: bool,默认值 True

    • 适用于DeepSpeed ZeRO-3。如果启用,将收集策略模型权重以提高生成速度。禁用此选项可以训练超出单个GPU VRAM容量的模型,但会降低生成速度。禁用此选项与vLLM生成不兼容。
2025-04-30
深度学习
00

揭秘 vLLM 中的 tokenizer_config.json:以 Qwen3 模型为例深度解析

在使用 vLLM 部署大型语言模型(LLM)时,我们经常会接触到模型目录下的各种配置文件。其中,tokenizer_config.json 是一个至关重要的文件,它像一座桥梁,连接着人类可读的文本与模型内部能理解的数字表示。本文将以部署 Qwen3-30B-A3B 模型为例,深入探讨 tokenizer_config.json 在 vLLM 中的作用以及其内部各项配置的含义。

2025-04-30
DL论文
00

YaRN:大语言模型的高效上下文窗口扩展

摘要

旋转位置嵌入(RoPE)已被证明可以在基于 Transformer 的语言模型中有效编码位置信息。然而,这些模型无法泛化到超出其训练时所使用的序列长度。我们提出了 YaRN(Yet another RoPE extensioN method),一种计算高效的方法来扩展这类模型的上下文窗口,所需 token 数量比先前方法少 10 倍,训练步数少 2.5 倍。使用 YaRN,我们展示了 LLaMA 模型可以有效地利用并外推到远超其原始预训练所允许的上下文长度,同时在上下文窗口扩展方面也超越了先前的最先进水平。此外,我们证明了 YaRN 具有超越微调数据集有限上下文的外推能力。使用 YaRN 微调的模型已在 https://github.com/jquesnelle/yarn 上公开并可在线复现,上下文长度最高可达 128k。

1 引言

基于 Transformer 的大型语言模型[40](LLMs)已成为许多自然语言处理(NLP)任务近乎无处不在的选择,在这些任务中,上下文学习(ICL)等长距离能力至关重要。在执行 NLP 任务时,由其训练过程决定的序列最大长度(上下文窗口)已成为预训练 LLM 的主要限制之一。通过少量微调(或无需微调)动态扩展上下文窗口的能力变得越来越重要。为此,Transformer 的位置编码成为讨论的中心。

最初的 Transformer 架构使用绝对正弦位置编码,后来改进为可学习的绝对位置编码[15]。此后,相对位置编码方案[32]进一步提高了 Transformer 的性能。目前,最流行的相对位置编码是 T5 相对偏置[30]、RoPE[34]、XPos[35]和 ALiBi[27]。

位置编码的一个反复出现的局限性是无法泛化到训练期间看到的上下文窗口之外。虽然像 ALiBi 这样的一些方法能够进行有限的泛化,但没有一种方法能够泛化到明显长于其预训练长度的序列[22]。

为了克服这一限制,已经进行了一些工作。[9]和同期[21]提出通过位置插值(PI)轻微修改 RoPE 并使用少量数据进行微调来扩展上下文长度。作为替代方案,[6]提出了"NTK-aware"插值法,考虑了高频信息的损失。此后,针对"NTK-aware"插值法提出了两种改进,各有侧重:

  • "Dynamic NTK"插值法[14],适用于无需微调的预训练模型。
  • "NTK-by-parts"插值法[7],在少量长上下文数据上进行微调时表现最佳。

"NTK-aware"插值法和"Dynamic NTK"插值法已经在开源模型中得到应用,例如 Code Llama[31](使用"NTK-aware"插值法)和 Qwen 7B[2](使用"Dynamic NTK")。 在本文中,除了全面介绍先前未发表的关于"NTK-aware"、"Dynamic NTK"和"NTK-by-part"插值法的工作外,我们还提出了 YaRN(Yet another RoPE extensioN method),这是一种改进的方法,可以有效地扩展使用旋转位置嵌入(RoPE)训练的模型的上下文窗口,包括 LLaMA[38]、GPTNeoX[5]和 PaLM[10]系列模型。 YaRN 在仅使用约原始预训练数据 0.1% 的情况下进行微调后,在上下文窗口扩展方面达到了最先进的性能。同时,通过结合称为动态缩放(Dynamic Scaling)的推理时技术,Dynamic-YaRN 可以在没有任何微调的情况下实现超过 2 倍的上下文窗口扩展。

2025-04-30
深度学习
00