|
10 | 10 | </p> |
11 | 11 |
|
12 | 12 | ## 📢 Updates |
| 13 | +- [2025-12-10] We released training code, sampling code, SQL schema, and related Docker configurations. |
| 14 | +- [2025-11-30] We released ENV code and Docker setup. |
| 15 | +- [2025-10-30] We released checkpoint and inference code. |
13 | 16 | - [2025-09-30] We released our [paper](https://arxiv.org/abs/2509.23866) and [project page](https://computer-use-agents.github.io/dart-gui). Check it out! |
14 | 17 |
|
15 | 18 | ## 🔨 TODO |
16 | | -- [ ] Release the model checkpoint for DART-GUI-7B. |
17 | | -- [ ] Add the training code and pipeline. |
| 19 | +- [ ] Polish the codebase. |
| 20 | +- [ ] Merge with the latest verl version. |
| 21 | +- [x] Release the model checkpoint for DART-GUI-7B. |
| 22 | +- [x] Add the training code and pipeline. |
| 23 | +- [x] Release checkpoint and inference code. |
| 24 | +- [x] Release ENV code and Docker setup. |
| 25 | +- [x] Release training code and sampling code. |
| 26 | +- [x] Release SQL schema and related Docker configurations. |
| 27 | + |
| 28 | +## 🚀 Quick Start |
| 29 | + |
| 30 | +This guide provides instructions for setting up the DART-GUI environment, including Docker container initialization, database schema configuration, and execution scripts for sampling and training. |
| 31 | + |
| 32 | +### 1. Preparation |
| 33 | + |
| 34 | +#### Download Docker Images |
| 35 | + |
| 36 | +Pull the required images for the GUI agent and the database. |
| 37 | + |
| 38 | +```bash |
| 39 | +# DART-GUI Image |
| 40 | +docker pull crpi-iwtwdoj3ikoon38c.cn-beijing.personal.cr.aliyuncs.com/pengxiangli1999/dart-gui:v0 |
| 41 | + |
| 42 | +# MySQL Image |
| 43 | +docker pull mysql:8.0.44-debian |
| 44 | +``` |
| 45 | + |
| 46 | +#### Prepare Model Checkpoints |
| 47 | + |
| 48 | +Download the `UI-TARS-1.5-7B` model using the HuggingFace CLI. Replace `<your local path>` with your actual directory. |
| 49 | + |
| 50 | +```bash |
| 51 | +huggingface-cli download ByteDance-Seed/UI-TARS-1.5-7B --local-dir <your local path> |
| 52 | +``` |
| 53 | + |
| 54 | +### 2. Docker Initialization |
| 55 | + |
| 56 | +Initialize the containers on your **GPU Machine**. Ensure you replace specific paths (like MySQL volume) with your local paths. |
| 57 | + |
| 58 | +#### Rollouter Container |
| 59 | + |
| 60 | +Used for the rollout service. |
| 61 | + |
| 62 | +```bash |
| 63 | +docker run -dit \ |
| 64 | + --name rollouter \ |
| 65 | + --gpus all \ |
| 66 | + -p 6008:6008 \ |
| 67 | + -p 8881:8881 \ |
| 68 | + -p 15959:15959 \ |
| 69 | + --shm-size=200g \ |
| 70 | + crpi-iwtwdoj3ikoon38c.cn-beijing.personal.cr.aliyuncs.com/pengxiangli1999/dart-gui:v0 |
| 71 | +``` |
| 72 | + |
| 73 | +#### Trainer Container |
| 74 | + |
| 75 | +Used for model training. |
| 76 | + |
| 77 | +```bash |
| 78 | +docker run -dit \ |
| 79 | + --name trainer \ |
| 80 | + --gpus all \ |
| 81 | + -p 6009:6008 \ |
| 82 | + -p 8882:8881 \ |
| 83 | + -p 15960:15959 \ |
| 84 | + --shm-size=1500g \ |
| 85 | + crpi-iwtwdoj3ikoon38c.cn-beijing.personal.cr.aliyuncs.com/pengxiangli1999/dart-gui:v0 |
| 86 | +``` |
| 87 | + |
| 88 | +#### MySQL Container |
| 89 | + |
| 90 | +Database server for tracking runs and checkpoints. Replace `<your sql default path>` with your local storage path. |
| 91 | + |
| 92 | +```bash |
| 93 | +docker run -dit \ |
| 94 | + --name mysql-server \ |
| 95 | + -p 3306:3306 \ |
| 96 | + -e MYSQL_ROOT_PASSWORD=admin \ |
| 97 | + -v <your sql default path>:/var/lib/mysql \ |
| 98 | + mysql:8.0.44-debian |
| 99 | +``` |
| 100 | + |
| 101 | +### 3. Database Configuration |
| 102 | + |
| 103 | +Connect to your MySQL container and initialize the tables using the SQL below. |
| 104 | + |
| 105 | +**Database Credentials:** |
| 106 | +- **User:** root |
| 107 | +- **Password:** admin |
| 108 | +- **Port:** 3306 |
| 109 | + |
| 110 | +#### SQL Schema |
| 111 | + |
| 112 | +```sql |
| 113 | +-- |
| 114 | +-- Table structure for table `rollout_run` |
| 115 | +-- |
| 116 | + |
| 117 | +DROP TABLE IF EXISTS `rollout_run`; |
| 118 | +/*!40101 SET @saved_cs_client = @@character_set_client */; |
| 119 | +/*!50503 SET character_set_client = utf8mb4 */; |
| 120 | +CREATE TABLE `rollout_run` ( |
| 121 | + `id` bigint NOT NULL AUTO_INCREMENT, |
| 122 | + `run_id` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, |
| 123 | + `trajectory_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, |
| 124 | + `task_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, |
| 125 | + `trace_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, |
| 126 | + `split_dir` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, |
| 127 | + `reward` double DEFAULT NULL, |
| 128 | + `num_chunks` int DEFAULT NULL, |
| 129 | + `used` int NOT NULL DEFAULT '0', |
| 130 | + `model_version` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, |
| 131 | + `instruction` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, |
| 132 | + `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 133 | + PRIMARY KEY (`id`), |
| 134 | + UNIQUE KEY `uq_rollout_run_id` (`id`), |
| 135 | + UNIQUE KEY `uk_rollout_run_traj_run` (`trajectory_id`,`run_id`), |
| 136 | + KEY `idx_rollout_run_task` (`task_id`) |
| 137 | +) ENGINE=InnoDB AUTO_INCREMENT=1319846 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; |
| 138 | +/*!40101 SET character_set_client = @saved_cs_client */; |
| 139 | + |
| 140 | +-- |
| 141 | +-- Table structure for table `checkpoint` |
| 142 | +-- |
| 143 | + |
| 144 | +DROP TABLE IF EXISTS `checkpoint`; |
| 145 | +/*!40101 SET @saved_cs_client = @@character_set_client */; |
| 146 | +/*!50503 SET character_set_client = utf8mb4 */; |
| 147 | +CREATE TABLE `checkpoint` ( |
| 148 | + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'Primary Key ID', |
| 149 | + `name` varchar(50) NOT NULL DEFAULT '' COMMENT 'Checkpoint Name (Unique English Identifier)', |
| 150 | + `version` varchar(50) NOT NULL COMMENT 'Version Number (Semantic Versioning, e.g., v1.0.0)', |
| 151 | + `run_id` varchar(191) NOT NULL DEFAULT '', |
| 152 | + `status` varchar(20) NOT NULL DEFAULT 'PENDING' COMMENT 'Status: PENDING|RUNNING|COMPLETED|FAILED|DEPRECATED', |
| 153 | + `path` varchar(255) NOT NULL COMMENT 'Storage Path (e.g., s3://bucket/path/checkpoint.ckpt)', |
| 154 | + `source` varchar(50) DEFAULT NULL COMMENT 'Source (e.g., User Upload/Training Generated/System Migration)', |
| 155 | + `operator` varchar(50) DEFAULT NULL COMMENT 'Operator (User ID or System Account)', |
| 156 | + `remark` varchar(1024) DEFAULT NULL COMMENT 'Remark (Free text format)', |
| 157 | + `config_yaml` text COMMENT 'Full Deployment Config (Encrypted Storage)', |
| 158 | + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Created At', |
| 159 | + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Last Updated At', |
| 160 | + `deleted_at` timestamp NULL DEFAULT NULL COMMENT 'Soft Delete Time', |
| 161 | + `started_at` timestamp NULL DEFAULT NULL COMMENT 'Started At', |
| 162 | + `finished_at` timestamp NULL DEFAULT NULL COMMENT 'Finished At', |
| 163 | + PRIMARY KEY (`id`), |
| 164 | + KEY `idx_status` (`status`), |
| 165 | + KEY `idx_created_at` (`created_at`), |
| 166 | + KEY `idx_updated_at` (`updated_at`) |
| 167 | +) ENGINE=InnoDB AUTO_INCREMENT=3117 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='Model Checkpoint Table (Records training checkpoints and deployment versions)'; |
| 168 | +/*!40101 SET character_set_client = @saved_cs_client */; |
| 169 | +``` |
| 170 | + |
| 171 | +### 4. Environment Setup (CPU Machine) |
| 172 | + |
| 173 | +Please follow the instructions in the repository below to initialize the environment on your **CPU machine**: |
| 174 | + |
| 175 | +- **Repository:** [GUI-Docker-Env](https://github.com/Computer-use-agents/GUI-Docker-Env.git) |
| 176 | + |
| 177 | +### 5. Execution |
| 178 | + |
| 179 | +#### Step 1: Start Rollouter (GPU Machine) |
| 180 | + |
| 181 | +Inside the `rollouter` docker container: |
| 182 | + |
| 183 | +```bash |
| 184 | +sh model_service.sh |
| 185 | +``` |
| 186 | + |
| 187 | +#### Step 2: Start Agent Runner (CPU Machine) |
| 188 | + |
| 189 | +Inside the configured CPU environment: |
| 190 | + |
| 191 | +```bash |
| 192 | +sh run.sh |
| 193 | +``` |
| 194 | + |
| 195 | +#### Step 3: Start Training (GPU Machine) |
| 196 | + |
| 197 | +Once the links are set up and data is flowing, start the training process inside the `trainer` docker container: |
| 198 | + |
| 199 | +```bash |
| 200 | +sh examples/osworld/async/run_trainer_debug_w_rollout_stepwise_train_pt.sh |
| 201 | +``` |
18 | 202 |
|
19 | 203 | ## 🤗 Team |
20 | 204 | ### Core Contributors |
@@ -96,4 +280,4 @@ If you find our paper and code useful in your research, please consider giving a |
96 | 280 |
|
97 | 281 | ## 🌟 Star History |
98 | 282 |
|
99 | | -[](https://star-history.com/#computer-use-agents/dart-gui&Date) |
| 283 | +[](https://star-history.com/#computer-use-agents/dart-gui&Date) |
0 commit comments