|
1 | | -# 🚀 大模型日志分析工具 |
| 1 | +# 🚀 ML Log Analyzer |
2 | 2 |
|
3 | | -一个现代化的 React + Vite 应用,用于分析和可视化大模型训练日志中的损失函数(Loss)和梯度范数(Grad Norm)数据。 |
| 3 | +一个现代化的在线工具,专门用于分析和可视化大模型训练日志中的损失函数(Loss)和梯度范数(Grad Norm)数据。支持多种日志格式,提供智能解析、多图表同步显示和高级对比分析功能。 |
4 | 4 |
|
5 | | -[](https://blog.javazero.top/compare_tool/) |
| 5 | +[](https://log.javazero.top/) |
6 | 6 | [](#license) |
7 | 7 | [](https://reactjs.org/) |
8 | 8 | [](https://vitejs.dev/) |
9 | 9 |
|
10 | 10 | ## 🌟 在线使用 |
11 | 11 |
|
12 | | -**直接访问**: [https://blog.javazero.top/compare_tool/](https://blog.javazero.top/compare_tool/) |
13 | | - |
14 | | -## ✨ 功能特性 |
15 | | - |
16 | | -### 📁 **文件上传** |
17 | | -- **拖拽上传**:将日志文件直接拖拽到网页上即可上传 |
18 | | -- **多文件支持**:同时上传和分析多个日志文件 |
19 | | -- **格式支持**:支持 `.log` 和 `.txt` 格式的文本文件 |
20 | | - |
21 | | -### 🔍 **数据解析** |
22 | | -- **正则表达式匹配**:使用自定义正则表达式提取Loss和Grad Norm数据 |
23 | | -- **默认模式**:提供默认的匹配规则 `loss:\\s*([\\d.]+)` 和 `grad norm:\\s*([\\d.]+)` |
24 | | -- **实时重解析**:修改正则表达式后可以重新解析所有文件 |
25 | | - |
26 | | -### 📊 **TensorBoard样式可视化** |
27 | | -- **原始数据**: 低透明度显示真实波动 |
28 | | -- **平滑曲线**: 移动平均显示趋势(可选) |
29 | | -- **智能布局**: 响应式设计,适配不同屏幕尺寸 |
30 | | -- **交互式图表**: 基于 Chart.js 的高性能图表渲染 |
31 | | - |
32 | | -### 🔬 **对比分析** |
33 | | -当选择2个文件时,提供专门的对比图表和统计指标: |
34 | | -- **Normal**: 原始差值 (File2 - File1) |
35 | | -- **Absolute**: 绝对差值 |File2 - File1| |
36 | | -- **Relative**: 相对差值百分比 |
37 | | -- **统计指标**: Mean Error (ME) 和 Mean Square Error (MSE) |
38 | | - |
39 | | -### 🎨 **现代化界面** |
40 | | -- **Tailwind CSS**: 现代化的响应式设计 |
41 | | -- **直观操作**: 简洁清晰的用户界面 |
42 | | -- **实时反馈**: 即时的数据更新和图表渲染 |
| 12 | +**直接访问**: [https://log.javazero.top/](https://log.javazero.top/) |
| 13 | + |
| 14 | +无需安装,打开即用!支持所有现代浏览器。 |
| 15 | + |
| 16 | +## ✨ 核心功能 |
| 17 | + |
| 18 | +### 📁 **智能文件上传** |
| 19 | +- **🎯 全页面拖拽**:将日志文件拖拽到页面任意位置即可上传 |
| 20 | +- **📊 多文件支持**:同时上传和分析多个训练日志文件 |
| 21 | +- **📝 格式兼容**:支持所有文本格式文件(`.log`、`.txt`、无后缀等) |
| 22 | +- **⚡ 即时解析**:文件上传后立即开始解析和可视化 |
| 23 | + |
| 24 | +### 🔍 **强大的数据解析系统** |
| 25 | +- **🎨 关键词匹配**(默认模式):智能识别日志中的关键字,自动提取数值 |
| 26 | + - Loss: `loss` → 自动查找后续数字 |
| 27 | + - Grad Norm: `global_norm` → 自动提取梯度范数值 |
| 28 | +- **⚙️ 正则表达式模式**:支持复杂的自定义匹配规则 |
| 29 | +- **🤖 智能推荐**:系统自动分析日志格式并推荐最佳解析方式 |
| 30 | +- **🔬 多格式支持**:JSON、键值对、数组、科学计数法等多种日志格式 |
| 31 | +- **🎯 独立配置**:每个文件可单独配置解析规则 |
| 32 | + |
| 33 | +### 📊 **高级可视化图表** |
| 34 | +- **🔄 多图表同步**:鼠标hover时,所有图表同步显示相同步骤的数据点 |
| 35 | +- **🎯 精确定位**:hover时显示实心圆点,精确指示当前训练步骤 |
| 36 | +- **⚡ 零延迟响应**:所有交互效果即时响应,无动画延迟 |
| 37 | +- **📏 可调整尺寸**:图表高度可以自由调整,适应不同分析需求 |
| 38 | +- **🎨 动态布局**:根据显示的图表数量自动调整布局(单列/双列) |
| 39 | + |
| 40 | +### 🔬 **深度对比分析** |
| 41 | +当选择2个文件时,系统提供专业的对比分析: |
| 42 | +- **📈 Normal模式**: 原始差值分析 (File2 - File1) |
| 43 | +- **📊 Absolute模式**: 绝对差值分析 |File2 - File1| |
| 44 | +- **📉 Relative模式**: 相对差值百分比分析 |
| 45 | +- **📋 统计指标**: 详细的Mean Difference、Mean Absolute Error、Mean Relative Error |
| 46 | +- **⚖️ 基准线设置**: 可配置相对误差和绝对误差的基准线 |
| 47 | + |
| 48 | +### �️ **灵活的显示控制** |
| 49 | +- **👁️ 图表切换**:独立控制Loss函数和Grad Norm图表的显示 |
| 50 | +- **📁 文件管理**:支持文件启用/禁用,灵活控制参与分析的数据 |
| 51 | +- **📊 数据范围**:支持设置分析的起始和结束位置,专注特定训练阶段 |
| 52 | +- **🔄 实时更新**:所有配置修改后图表立即更新 |
| 53 | + |
| 54 | +### 🎨 **现代化用户界面** |
| 55 | +- **📱 响应式设计**:完美适配桌面、平板和手机设备 |
| 56 | +- **🌈 直观交互**:清晰的视觉反馈和用户引导 |
| 57 | +- **♿ 无障碍支持**:完整的键盘导航和屏幕阅读器支持 |
| 58 | +- **🎯 用户友好**:简洁明了的操作流程,零学习成本 |
43 | 59 |
|
44 | 60 | ## 🛠️ 技术栈 |
45 | 61 |
|
|
49 | 65 | - **图表库**: Chart.js + react-chartjs-2 |
50 | 66 | - **图标**: Lucide React |
51 | 67 | - **开发语言**: JavaScript (ES6+) |
| 68 | +- **部署方式**: GitHub Actions + GitHub Pages |
52 | 69 |
|
53 | | -## 🚀 快速开始 |
| 70 | +## 🚀 部署说明 |
54 | 71 |
|
55 | | -### 方法1: 在线使用 (推荐) |
56 | | -直接访问 GitHub Pages 部署的版本,无需任何安装。 |
| 72 | +本项目采用 GitHub Actions 自动化部署到 GitHub Pages,每次推送到主分支时自动构建和部署。 |
57 | 73 |
|
58 | | -### 方法2: 本地开发 |
| 74 | +如需 fork 此项目进行自定义开发: |
59 | 75 |
|
60 | | -```bash |
61 | | -# 克隆仓库 |
62 | | -git clone https://github.com/JavaZeroo/compare_tool.git |
63 | | -cd compare_tool |
| 76 | +1. Fork 本仓库到你的 GitHub 账户 |
| 77 | +2. 在仓库设置中启用 GitHub Pages |
| 78 | +3. 选择 GitHub Actions 作为部署源 |
| 79 | +4. 推送代码时将自动触发构建和部署 |
64 | 80 |
|
65 | | -# 安装依赖 |
66 | | -npm install |
| 81 | +## 📝 使用指南 |
67 | 82 |
|
68 | | -# 启动开发服务器 |
69 | | -npm run dev |
| 83 | +### 🎯 快速上手 |
| 84 | +1. **📂 上传文件**: 拖拽训练日志文件到页面任意位置 |
| 85 | +2. **🔍 选择解析方式**: |
| 86 | + - **关键词匹配**(推荐):直接使用 `loss` 和 `global_norm` 关键字 |
| 87 | + - **正则表达式**:自定义复杂的匹配规则 |
| 88 | +3. **📊 查看图表**: 系统自动解析并生成交互式图表 |
| 89 | +4. **⚖️ 对比分析**: 上传两个文件时自动启用高级对比功能 |
| 90 | +5. **🎛️ 调整显示**: 控制图表显示选项和数据范围 |
70 | 91 |
|
71 | | -# 构建生产版本 |
72 | | -npm run build |
| 92 | +### 🔧 高级功能 |
| 93 | +- **📁 文件独立配置**: 每个文件可单独设置解析规则和数据范围 |
| 94 | +- **🔄 多图表同步**: hover任意图表时,所有相关图表同步显示 |
| 95 | +- **📏 图表调整**: 拖拽调整图表高度,适应不同分析需求 |
| 96 | +- **📋 统计分析**: 自动计算并显示详细的统计指标 |
73 | 97 |
|
74 | | -# 预览生产版本 |
75 | | -npm run preview |
76 | | -``` |
| 98 | +## 📊 支持的日志格式 |
77 | 99 |
|
78 | | -## 📝 使用方法 |
| 100 | +### 🎯 关键词匹配模式(推荐) |
| 101 | +支持多种常见的训练日志格式: |
79 | 102 |
|
80 | | -1. **上传文件**: 拖拽或选择 `.log`/`.txt` 文件 |
81 | | -2. **配置正则**: 根据日志格式调整正则表达式(可选) |
82 | | -3. **查看图表**: 系统自动解析并生成可视化图表 |
83 | | -4. **对比分析**: 上传两个文件时可进行详细对比 |
84 | | -5. **调整显示**: 控制数据点和平滑曲线的显示 |
| 103 | +```bash |
| 104 | +# 标准格式 |
| 105 | +loss: 0.1234 |
| 106 | +global_norm: [1.5678] |
85 | 107 |
|
86 | | -## 📊 支持的日志格式 |
| 108 | +# JSON 格式 |
| 109 | +{"loss": 0.1234, "global_norm": 1.5678} |
87 | 110 |
|
88 | | -工具支持包含以下格式的训练日志: |
| 111 | +# 数组格式 |
| 112 | +loss [0.1234] |
| 113 | +global_norm: [1.5678] |
89 | 114 |
|
| 115 | +# 科学计数法 |
| 116 | +loss: 1.234e-4 |
| 117 | +global_norm: 1.5678E+0 |
| 118 | + |
| 119 | +# MindFormers 格式 |
| 120 | +Step 100: loss=0.1234 global_norm=1.5678 |
90 | 121 | ``` |
91 | | -loss: 0.1234 |
92 | | -grad norm: 1.5678 |
| 122 | + |
| 123 | +### ⚙️ 正则表达式模式 |
| 124 | +对于特殊格式的日志,可以使用自定义正则表达式: |
| 125 | + |
| 126 | +```bash |
| 127 | +# 默认正则 |
| 128 | +Loss: loss:\\s*([\\d.eE+-]+) |
| 129 | +Grad Norm: grad[\\s_]norm:\\s*([\\d.eE+-]+) |
| 130 | + |
| 131 | +# 自定义示例 |
| 132 | +train_loss:\\s*([\\d.eE+-]+) |
| 133 | +gradient_norm:\\s*([\\d.eE+-]+) |
93 | 134 | ``` |
94 | 135 |
|
95 | | -您可以通过修改正则表达式来适配其他格式。 |
| 136 | +## 🔧 功能特色 |
96 | 137 |
|
97 | | -## 🔧 自定义配置 |
| 138 | +### 🎯 智能解析系统 |
| 139 | +- **关键词匹配**: 默认模式,智能识别常见训练日志格式 |
| 140 | +- **智能推荐**: 自动分析日志结构,推荐最佳解析方式 |
| 141 | +- **多格式支持**: 兼容JSON、键值对、数组、科学计数法等格式 |
| 142 | +- **实时预览**: 解析结果实时预览,包含数值、行号、原文信息 |
98 | 143 |
|
99 | | -### 正则表达式 |
100 | | -- **Loss**: `loss:\\s*([\\d.]+)` |
101 | | -- **Grad Norm**: `grad norm:\\s*([\\d.]+)` |
| 144 | +### 📊 高级可视化 |
| 145 | +- **同步显示**: 多图表联动,hover时同步显示相同训练步骤 |
| 146 | +- **精确定位**: 实心圆点精确标识当前hover位置 |
| 147 | +- **即时响应**: 零延迟交互,所有动画已优化 |
| 148 | +- **响应式布局**: 根据图表数量自动调整单列/双列布局 |
102 | 149 |
|
103 | | -### 显示选项 |
104 | | -- 显示/隐藏原始数据点 |
105 | | -- 启用/禁用平滑曲线 |
106 | | -- 多种对比模式选择 |
| 150 | +### 🔬 专业对比分析 |
| 151 | +- **三种对比模式**: Normal、Absolute、Relative差值分析 |
| 152 | +- **统计指标**: Mean Difference、Mean Absolute Error、Mean Relative Error |
| 153 | +- **基准线设置**: 可配置对比基准线,突出显示显著差异 |
| 154 | +- **差值可视化**: 专门的差值图表,清晰展示训练差异 |
| 155 | + |
| 156 | +### 🎛️ 灵活控制 |
| 157 | +- **文件管理**: 支持文件启用/禁用、删除、重命名 |
| 158 | +- **独立配置**: 每个文件可单独设置解析规则和数据范围 |
| 159 | +- **全局同步**: 全局解析配置可一键应用到所有文件 |
| 160 | +- **数据范围**: 支持设置分析的起始和结束步骤 |
107 | 161 |
|
108 | 162 | ## 📦 项目结构 |
109 | 163 |
|
110 | 164 | ``` |
111 | 165 | src/ |
112 | | -├── components/ # React 组件 |
113 | | -│ ├── Header.jsx # 页面头部 |
114 | | -│ ├── FileUpload.jsx # 文件上传 |
115 | | -│ ├── FileList.jsx # 文件列表 |
116 | | -│ ├── RegexControls.jsx # 正则控制 |
117 | | -│ ├── ComparisonControls.jsx # 对比控制 |
118 | | -│ └── ChartContainer.jsx # 图表容器 |
119 | | -├── App.jsx # 主应用组件 |
120 | | -├── main.jsx # 应用入口 |
121 | | -└── index.css # 全局样式 |
| 166 | +├── components/ # React 组件 |
| 167 | +│ ├── Header.jsx # 页面头部(已清空) |
| 168 | +│ ├── FileUpload.jsx # 文件上传组件 |
| 169 | +│ ├── FileList.jsx # 文件列表管理 |
| 170 | +│ ├── RegexControls.jsx # 解析规则控制 |
| 171 | +│ ├── ComparisonControls.jsx # 对比模式控制 |
| 172 | +│ ├── ChartContainer.jsx # 图表容器和同步控制 |
| 173 | +│ ├── ResizablePanel.jsx # 可调整尺寸的图表面板 |
| 174 | +│ └── FileConfigModal.jsx # 文件配置弹窗 |
| 175 | +├── App.jsx # 主应用组件 |
| 176 | +├── main.jsx # 应用入口 |
| 177 | +└── index.css # 全局样式和无障碍支持 |
122 | 178 | ``` |
123 | 179 |
|
124 | 180 | ## 🤝 贡献 |
125 | 181 |
|
126 | | -欢迎贡献代码!请查看 [Contributing Guidelines](CONTRIBUTING.md) 了解详情。 |
| 182 | +欢迎贡献代码和提出建议! |
| 183 | + |
| 184 | +### 如何贡献 |
| 185 | +1. Fork 本仓库 |
| 186 | +2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) |
| 187 | +3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) |
| 188 | +4. 推送到分支 (`git push origin feature/AmazingFeature`) |
| 189 | +5. 打开一个 Pull Request |
| 190 | + |
| 191 | +### 报告问题 |
| 192 | +如果您发现任何问题或有功能建议,请在 [Issues](https://github.com/JavaZeroo/log-parser/issues) 页面提交。 |
127 | 193 |
|
128 | 194 | ## 📄 许可证 |
129 | 195 |
|
130 | 196 | 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 |
131 | 197 |
|
132 | 198 | ## 🙏 致谢 |
133 | 199 |
|
134 | | -- [Chart.js](https://www.chartjs.org/) - 强大的图表库 |
135 | | -- [React](https://reactjs.org/) - 用户界面库 |
136 | | -- [Vite](https://vitejs.dev/) - 快速的构建工具 |
| 200 | +感谢以下开源项目的支持: |
| 201 | + |
| 202 | +- [Chart.js](https://www.chartjs.org/) - 强大的图表库,提供高性能可视化 |
| 203 | +- [React](https://reactjs.org/) - 现代化的用户界面库 |
| 204 | +- [Vite](https://vitejs.dev/) - 快速的前端构建工具 |
137 | 205 | - [Tailwind CSS](https://tailwindcss.com/) - 实用优先的CSS框架 |
138 | | -- [Lucide](https://lucide.dev/) - 美观的图标库 |
| 206 | +- [Lucide](https://lucide.dev/) - 美观一致的图标库 |
139 | 207 |
|
140 | 208 | --- |
141 | 209 |
|
142 | | -如果这个工具对您有帮助,请给它一个 ⭐ ! |
| 210 | +## ⭐ 支持项目 |
| 211 | + |
| 212 | +如果这个工具对您的机器学习项目有帮助,请给它一个 ⭐ ! |
| 213 | + |
| 214 | +您的支持是我们持续改进的动力。 |
0 commit comments