Higgsfield项目初始化与实验部署完全指南
项目概述
Higgsfield是一个专注于简化大规模语言模型训练流程的开源框架。它通过提供标准化的项目结构和自动化工具,让研究人员能够更专注于模型开发本身,而不必花费大量时间在基础设施配置上。
环境准备
项目初始化
使用以下命令创建新项目:
$ higgsfield init my_llama_project
这个命令会创建一个标准化的项目目录结构,包含以下关键文件:
my_llama_project
├── src
│ ├── __init__.py
│ ├── experiment.py # 实验定义文件
│ └── config.py # 训练节点配置
├── Dockerfile # 容器化配置
├── env # 环境变量配置
├── requirements.txt # Python依赖
└── README.md
环境配置
-
SSH密钥配置: 编辑
env
文件,指定用于访问训练节点的SSH密钥路径:SSH_KEY=~/.ssh/id_rsa
-
节点配置: 修改
src/config.py
文件,配置训练节点信息:
import os
NAME = "my_llama_project"
# 训练节点IP列表
HOSTS = [
"1.2.3.4",
]
# 节点登录用户名(所有节点相同)
HOSTS_USER = "ubuntu"
# SSH端口号(所有节点相同)
HOSTS_PORT = 22
# 每个节点的进程数(通常等于GPU数量)
NUM_PROCESSES = 4
# 其他环境变量
WAN_DB_TOKEN = os.environ.get("WAN_DB_TOKEN", None)
版本控制设置
建议使用Git进行版本控制,但注意:
- 创建空仓库,不包含README、.gitignore或LICENSE文件
- 确保SSH配置正确,能够推送代码
节点初始化
执行以下命令自动配置训练节点:
$ higgsfield setup-nodes
这个过程会:
- 安装Docker环境
- 设置必要的工具链
- 配置部署密钥
- 拉取所需的Docker镜像
注意:此过程只需执行一次,但可能需要较长时间。
实验定义
Higgsfield采用简洁的实验定义方式。查看src/experiment.py
示例:
@experiment("llama")
@param("size", options=["70b", "13b", "7b"])
def train_llama(params):
print(f"Training llama with size {params.size}")
...
这种声明式API避免了复杂的配置框架(如hydra或argparse),让实验定义更加直观。
构建实验配置:
$ higgsfield build-experiments
此命令会生成工作流文件:
.github
└── workflows
├── run_llama.yml # 实验运行配置
└── deploy.yml # 部署配置
部署与执行
密钥配置
- 将SSH密钥内容添加到代码托管平台的仓库密钥中
- 通过以下命令获取部署密钥并添加:
$ higgsfield show-deploy-key
工作流执行
提交代码后:
- 部署工作流会自动执行
- 在Actions界面手动触发实验工作流
- 选择实验参数并启动训练
训练过程会显示在日志中,您可以实时监控进度。
常见问题排查
如果遇到节点初始化问题:
- 检查
env
文件中的SSH密钥路径是否正确 - 确认
config.py
中的节点信息准确 - 验证Git仓库的SSH/HTTPS配置
- 确保部署密钥已正确添加
最佳实践建议
- 实验设计:充分利用Higgsfield的参数化功能,系统性地设计实验变量
- 资源管理:根据GPU数量合理设置
NUM_PROCESSES
- 版本控制:定期提交代码变更,特别是实验定义和配置修改
- 日志监控:利用平台提供的日志功能跟踪训练进度
通过Higgsfield框架,研究人员可以大幅减少基础设施管理时间,更专注于模型创新和实验设计。这套标准化的流程不仅提高了可靠性,也使团队协作更加高效。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考