128 lines
5.5 KiB
Markdown
128 lines
5.5 KiB
Markdown
# 火山引擎ECS提供商配置指南
|
||
|
||
本指南介绍如何为OSWorld桌面环境配置和使用火山引擎ECS。
|
||
|
||
## 配置流程
|
||
|
||
1. **火山引擎账户**:您需要一个有效的火山引擎账户,本脚本默认ECS通过按量付费方式拉起,需保证账户余额在100以上。
|
||
2. **访问密钥**:在火山引擎IAM控制台中创建AccessKey ID和SecretAccessKey,并授权ECS控制权限
|
||
3. **VPC设置**:在目标地域创建VPC、子网和安全组
|
||
4. **自定义镜像**:创建OSWorld自定义镜像
|
||
5. 建议手动完成一次ECS创建流程后,记录所有需要的环境变量信息。
|
||
|
||
## 环境变量
|
||
|
||
在您的`.env`文件中设置以下环境变量:
|
||
|
||
```bash
|
||
# 火山引擎访问凭证
|
||
VOLCENGINE_ACCESS_KEY_ID=your_access_key_id
|
||
VOLCENGINE_SECRET_ACCESS_KEY=your_secret_access_key
|
||
|
||
# ECS配置信息
|
||
VOLCENGINE_REGION=eu-central-1
|
||
VOLCENGINE_IMAGE_ID=your_image_id
|
||
VOLCENGINE_INSTANCE_TYPE=ecs.e-c1m2.large
|
||
VOLCENGINE_SUBNET_ID=subnet-xxxxxxxxx
|
||
VOLCENGINE_SECURITY_GROUP_ID=sg-xxxxxxxxx
|
||
VOLCENGINE_ZONE_ID=zone-xxxxxxxxx
|
||
VOLCENGINE_DEFAULT_PASSWORD=your_default_password
|
||
```
|
||
|
||
## 所需火山引擎资源
|
||
|
||
### 1. VPC和子网
|
||
- 在目标地域创建VPC
|
||
- 在VPC内创建子网
|
||
- 确保子网具有互联网访问能力以支持VNC连接
|
||
|
||
### 2. 安全组
|
||
**⚠️ 重要提示**:请严格按照以下端口设置,以防止OSWorld任务因连接问题而失败:
|
||
|
||
#### 入方向规则(需要8条规则)
|
||
|
||
| 类型 | 协议 | 端口范围 | 源地址 | 描述 |
|
||
|------|------|----------|--------|------|
|
||
| SSH | TCP | 22 | 0.0.0.0/0 | SSH访问 |
|
||
| HTTP | TCP | 80 | 172.31.0.0/16 | HTTP流量 |
|
||
| 自定义TCP | TCP | 5000 | 172.31.0.0/16 | OSWorld后端服务 |
|
||
| 自定义TCP | TCP | 5910 | 0.0.0.0/0 | NoVNC可视化端口 |
|
||
| 自定义TCP | TCP | 8006 | 172.31.0.0/16 | VNC服务端口 |
|
||
| 自定义TCP | TCP | 8080 | 172.31.0.0/16 | VLC服务端口 |
|
||
| 自定义TCP | TCP | 8081 | 172.31.0.0/16 | 附加服务端口 |
|
||
| 自定义TCP | TCP | 9222 | 172.31.0.0/16 | Chrome控制端口 |
|
||
|
||
#### 出方向规则(需要1条规则)
|
||
|
||
| 类型 | 协议 | 端口范围 | 目标地址 | 描述 |
|
||
|------|------|----------|----------|------|
|
||
| 全部流量 | 全部 | 全部 | 0.0.0.0/0 | 允许所有出站流量 |
|
||
|
||
### 3. 自定义镜像
|
||
您需要为火山引擎ECS创建自定义OSWorld镜像。请按照"为OSWorld创建自定义ECS镜像"部分的说明进行操作。
|
||
|
||
## 为OSWorld创建自定义ECS镜像
|
||
|
||
本部分提供如何创建OSWorld桌面环境所需的自定义ECS镜像的指导。该过程包括设置带有桌面环境和VNC服务器的基础实例,然后从中创建自定义镜像。
|
||
|
||
### 分步镜像创建过程
|
||
#### 步骤1:上传现有qcow2镜像到火山引擎
|
||
- 从`desktop_env/providers/docker/manager.py`中的链接下载提供的qcow2镜像:https://huggingface.co/datasets/xlangai/ubuntu_osworld/resolve/main/Ubuntu.qcow2.zip
|
||
- 解压下载的文件并上传到火山引擎对象存储服务(TOS)。确保TOS与您要启动ECS实例的目标地域在同一地域。
|
||
- 在您的ECS控制台中,转到"镜像"页面,您将看到"导入镜像"按钮。点击它并按照说明从TOS导入qcow2镜像。
|
||
- 导入完成后,您将在"镜像"列表中看到导入的镜像。
|
||
|
||
#### 步骤2:创建新镜像
|
||
请注意,您在步骤1中创建的镜像分辨率与您想要用于OSWorld的分辨率(1920x1080)不同。我们需要自定义镜像以具有正确的分辨率并设置noVNC。
|
||
- 转到"实例"选项卡,使用导入的镜像创建新实例。
|
||
- 通过VNC连接到正在运行的实例。
|
||
- 连接到实例后,请打开终端并下载此配置脚本:`https://gist.githubusercontent.com/qykong/bea58ff98f20057d3a69921276dd4553/raw/cd1a91a0840c4192d793f43cfb90553370343b08/config.sh`。
|
||
- 运行脚本并重启您的实例。
|
||
- 重启后,实例将具有正确的分辨率和noVNC设置。您可以通过"http://<your_instance_public_ip>:5910/vnc.html"连接到实例(确保您的安全组允许端口5910)。
|
||
- 将正在运行的实例保存为新镜像。新镜像将用作OSWorld镜像。
|
||
|
||
## 使用说明
|
||
|
||
### 启动OSWorld任务
|
||
```bash
|
||
python run_multienv_qwen25vl.py \
|
||
--provider_name volcengine \
|
||
--region eu-central-1 \
|
||
--num_envs 2 \
|
||
--model qwen2.5-vl-72b-instruct \
|
||
--action_space pyautogui \
|
||
--observation_type screenshot \
|
||
--max_steps 15 \
|
||
--domain chrome
|
||
```
|
||
|
||
### 监控实例状态
|
||
- 在火山引擎控制台中查看实例运行状态
|
||
- 通过VNC URL访问远程桌面:`http://<public_ip>:5910/vnc.html`
|
||
- 查看日志文件了解任务执行情况
|
||
|
||
### 清理资源
|
||
- 任务完成后,实例会自动终止
|
||
- 如需手动清理,可在控制台中删除相关实例
|
||
- 建议定期清理不再使用的镜像以节省存储成本
|
||
|
||
## 故障排除
|
||
|
||
### 常见问题
|
||
1. **实例启动失败**:检查账户余额、镜像ID和实例类型配置
|
||
2. **VNC连接失败**:确认安全组端口5910已开放
|
||
3. **网络连接问题**:验证子网配置和路由表设置
|
||
4. **镜像导入失败**:检查TOS权限和镜像格式
|
||
|
||
### 日志查看
|
||
- 查看控制台日志:`logs/normal-YYYYMMDD@HHMMSS.log`
|
||
- 查看调试日志:`logs/debug-YYYYMMDD@HHMMSS.log`
|
||
- 查看实例系统日志:通过VNC连接查看系统日志
|
||
|
||
## 成本优化建议
|
||
|
||
1. **实例类型选择**:根据任务复杂度选择合适的实例类型
|
||
2. **镜像优化**:定期清理未使用的镜像
|
||
3. **批量任务**:合理设置并发数量以平衡性能和成本
|
||
4. **监控使用**:定期查看资源使用情况,及时调整配置
|