2025-10-11
usefulScripts
00
python
展开代码
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 多进程文件快速复制工具 支持递归复制目录结构,使用多进程提高复制速度 """ import os import shutil import argparse from multiprocessing import Pool, cpu_count from pathlib import Path import time from typing import List, Tuple def get_all_files(source_dir: str) -> List[Tuple[str, str]]: """ 递归获取源目录下所有文件的路径对 返回: [(源文件路径, 相对路径), ...] """ file_pairs = [] source_path = Path(source_dir) for root, dirs, files in os.walk(source_dir): for file in files: source_file = os.path.join(root, file) # 计算相对路径 relative_path = os.path.relpath(source_file, source_dir) file_pairs.append((source_file, relative_path)) return file_pairs def copy_single_file(args: Tuple[str, str, str]) -> Tuple[bool, str, str]: """ 复制单个文件 args: (源文件路径, 相对路径, 目标根目录) 返回: (是否成功, 源文件路径, 错误信息) """ source_file, relative_path, dest_root = args try: # 构建目标文件路径 dest_file = os.path.join(dest_root, relative_path) # 确保目标目录存在 dest_dir = os.path.dirname(dest_file) os.makedirs(dest_dir, exist_ok=True) # 复制文件 shutil.copy2(source_file, dest_file) return True, source_file, "" except Exception as e: return False, source_file, str(e) def fast_copy(source_dir: str, dest_dir: str, num_processes: int = 300): """ 多进程快速复制目录 Args: source_dir: 源目录路径 dest_dir: 目标目录路径 num_processes: 进程数量,默认300 """ print(f"开始扫描源目录: {source_dir}") start_time = time.time() # 获取所有文件路径 file_pairs = get_all_files(source_dir) scan_time = time.time() - start_time print(f"扫描完成,共找到 {len(file_pairs)} 个文件,耗时 {scan_time:.2f} 秒") if not file_pairs: print("源目录中没有找到文件") return # 确保目标根目录存在 os.makedirs(dest_dir, exist_ok=True) # 准备多进程参数 copy_args = [(source_file, relative_path, dest_dir) for source_file, relative_path in file_pairs] print(f"开始使用 {num_processes} 个进程复制文件...") copy_start_time = time.time() # 使用多进程复制文件 success_count = 0 error_count = 0 with Pool(processes=num_processes) as pool: results = pool.map(copy_single_file, copy_args) for success, source_file, error_msg in results: if success: success_count += 1 else: error_count += 1 print(f"复制失败: {source_file} - {error_msg}") copy_time = time.time() - copy_start_time total_time = time.time() - start_time print(f"\n复制完成!") print(f"成功复制: {success_count} 个文件") print(f"复制失败: {error_count} 个文件") print(f"复制耗时: {copy_time:.2f} 秒") print(f"总耗时: {total_time:.2f} 秒") print(f"平均速度: {success_count/copy_time:.2f} 文件/秒") def main(): parser = argparse.ArgumentParser(description='多进程文件快速复制工具') parser.add_argument('source', help='源目录路径') parser.add_argument('dest', help='目标目录路径') parser.add_argument('-p', '--processes', type=int, default=300, help='进程数量 (默认: 300)') args = parser.parse_args() # 检查源目录是否存在 if not os.path.exists(args.source): print(f"错误: 源目录不存在: {args.source}") return if not os.path.isdir(args.source): print(f"错误: 源路径不是目录: {args.source}") return # 调整进程数量 max_processes = min(args.processes, cpu_count() * 4) # 限制最大进程数 if args.processes != max_processes: print(f"进程数量调整为: {max_processes} (原设置: {args.processes})") print(f"源目录: {args.source}") print(f"目标目录: {args.dest}") print(f"进程数量: {max_processes}") print("-" * 50) fast_copy(args.source, args.dest, max_processes) if __name__ == '__main__': main()
2025-10-10
DL论文
00
2025-10-09
DL论文
00

https://arxiv.org/pdf/2411.11984

Understanding Chain-of-Thought in LLMs through Information Theory

arXiv:2411.11984 | ByteDance Seed & UC Santa Cruz


核心问题

现有CoT评估方法的两大缺陷:

  • 依赖人工标注数据
  • 无法准确评估中间推理步骤,高误报率

理论框架

1. 信息增益量化

将CoT推理形式化为信息论问题,定义每个推理步骤 sis_i 的信息增益:

I(si;Ys<i,X)=H(Ys<i,X)H(Ysi,X)I(s_i; Y | s_{<i}, X) = H(Y | s_{<i}, X) - H(Y | s_{\leq i}, X)

其中:

  • XX: 输入问题
  • YY: 目标答案
  • sis_i: 第 ii 个推理步骤
  • s<is_{<i}: 前 i1i-1 个步骤
  • H()H(\cdot): 条件熵

物理意义:量化步骤 sis_i 对减少答案不确定性的贡献

2025-10-09
Linux运维
00

首先列出所有名为 uiagent_all_datasets.tar.part* 的分卷压缩文件,然后按照版本号顺序(数字顺序)排序,接着将这些分卷文件按顺序合并成一个完整的 tar 文件流,最后将合并后的内容解压到指定目录 /mnt/jfs5/tarjieya 中。这是处理被分割成多个部分的大型 tar 压缩包的常见方法,通过管道操作实现"列出→排序→合并→解压"的一条龙处理。

具体流程是:

  1. xargs cat 按顺序读取分卷文件,以的形式输出数据
  2. 通过管道 | 将数据流实时传递给 tar xf -
  3. tar xf - 中的 - 表示从标准输入(stdin)读取,它会边读边解压,解压完一部分就写入磁盘
bash
展开代码
ls uiagent_all_datasets.tar.part* | sort -V | xargs cat | tar xf - -C /mnt/jfs5/tarjieya
2025-09-29
DL论文
00

https://arxiv.org/pdf/2509.21193

🎯 核心思路

这个系统就是让AI像人类专家一样自然地思考,而不是像机器人那样机械地操作。

💡 三个关键创新

1️⃣ 边想边查(监控器系统)

  • 老办法:做题→卡住了→停下来→打开Google→搜索→回来继续(思路全断了)
  • 新办法:一边做题,脑子后台自动提醒"诶这里好像不太确定",相关信息自然浮现出来

就像你考试时突然想起老师讲过的知识点,不需要真的翻书。

2️⃣ 互相帮改(层次化精炼)

  • 老办法:5个人做题,最后投票或平均答案
  • 新办法
    • 拿小明的答案当底稿
    • 小红说"第3步算错了"→改
    • 小刚说"中间漏了一步"→补
    • 小花说"这句话说得不清楚"→润色
    • 轮流当"底稿",每个答案都被改进
2025-09-26
深度学习
00

Emergent Abilities of Large Language Models

https://arxiv.org/abs/2206.07682

大语言模型的涌现能力:理解智能的跃迁

论文背景

2022年,来自Google Research、Stanford University等机构的研究团队发布了《Emergent Abilities of Large Language Models》,这篇论文探讨了大语言模型中一个令人着迷的现象——涌现能力。与之前关注的平滑缩放定律不同,这篇论文揭示了模型能力的不可预测的跃迁

2025-09-26
深度学习
00

https://arxiv.org/pdf/2001.08361

神经语言模型缩放定律:核心观点解读

论文背景

2020年,OpenAI发布了《Scaling Laws for Neural Language Models》,这篇论文通过大规模实验研究了语言模型性能与模型规模、数据大小、计算量之间的关系,为大语言模型的发展奠定了科学基础。

核心观点一:三大幂律关系

论文最重要的发现是模型性能与三个关键因素呈现精确的幂律关系

1. 模型参数规律

展开代码
损失 ∝ (参数量)^(-0.076)
  • 模型参数量每增加一倍,性能提升约5%
  • 这个关系在768个参数到15亿参数范围内都成立

2. 数据规模规律

展开代码
损失 ∝ (数据量)^(-0.095)
  • 训练数据每增加一倍,性能提升约6.5%
  • 跨越了从2200万到230亿tokens的范围

3. 计算预算规律

展开代码
损失 ∝ (计算量)^(-0.05)
  • 训练计算量每增加一倍,性能提升约3.5%
  • 提供了性能提升的"价格表"
2025-09-26
GRPO
00

https://arxiv.org/pdf/2509.13232

Single-stream Policy Optimization 论文总结

基本信息

  • 论文标题: Single-stream Policy Optimization
  • 研究领域: 大语言模型(LLM)策略优化

研究背景与动机

现有方法的局限性

当前大语言模型的策略梯度优化主要采用基于组的方法(group-based methods),如GRPO(Group-based Reinforcement Policy Optimization)。这些方法虽然通过即时基线(on-the-fly baselines)来减少方差,但存在以下关键缺陷:

  1. 退化组问题: 频繁出现的退化组会抹除学习信号,影响模型训练效果
  2. 同步障碍: 同步屏障阻碍了系统的可扩展性,限制了大规模部署的效率
2025-09-25
深度学习
00

取决于问题复杂度。

要做通用模型,sft的问答对很丰富很复杂,那么蒸馏是有意义的。

如果是专用模型,蒸馏代价太大作用还不大,不如直接用专用sft数据去直接sft小模型。

2025-09-25
深度学习
00

COT是"Chain of Thought"(思维链)的缩写,指的是让AI模型逐步展示推理过程,而不是直接给出答案。

你提出的核心问题确实很有意思:如果模型无法准确判断自己是否真正"知道"某件事,那COT为什么还能提升效果?

我觉得可能的解释是:

关于"知道"的判断: 模型确实很难区分"真知道"和"看起来知道"。它可能基于训练数据中的模式匹配给出看似合理但实际错误的答案,而且对此很有信心。这是个根本性的认知限制。

COT的作用机制: 但COT之所以有效,可能不是因为它帮助模型"自我纠偏",而是因为:

  1. 激活更多相关信息:逐步推理过程中,模型会调用更多相关的训练记忆和模式,增加答对的概率

  2. 结构化思考:强制模型按步骤展开,减少了"跳跃式"错误,就像人类列提纲一样

  3. 多次"采样"机会:每个推理步骤都是一次重新"采样",增加了碰到正确路径的可能性

  4. 暴露推理过程:虽然模型本身可能意识不到错误,但推理步骤暴露给了人类,让人类可以发现问题

所以COT可能不是真正的"自我纠偏",而是一种提高答案质量的工程技巧。