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