lxylxy123321 пре 1 недеља
родитељ
комит
5d58c01de5
3 измењених фајлова са 62 додато и 131 уклоњено
  1. 19 0
      backend/app/engines/remote_train.py
  2. 12 0
      backend/app/preprocessors/__init__.py
  3. 31 131
      result.txt

+ 19 - 0
backend/app/engines/remote_train.py

@@ -92,6 +92,25 @@ async def run_training(job_id: str, model_id: str, model_type: str, dataset_path
         task_type = config.get("task_type", "sft")
         template = config.get("dataset_template", "alpaca")
 
+        # DEBUG: 诊断权限
+        import stat
+        from pathlib import Path
+        proc_dir = settings.processed_dir
+        _write_log(type="debug",
+                   proc_dir=str(proc_dir),
+                   proc_dir_exists=proc_dir.exists(),
+                   proc_dir_writable=os.access(proc_dir, os.W_OK) if proc_dir.exists() else False,
+                   dataset_path=dataset_path,
+                   dataset_exists=Path(dataset_path).exists())
+        if proc_dir.exists():
+            st = proc_dir.stat()
+            _write_log(type="debug",
+                       proc_dir_mode=oct(st.st_mode),
+                       proc_dir_uid=st.st_uid,
+                       proc_dir_gid=st.st_gid,
+                       my_uid=os.getuid(),
+                       my_gid=os.getgid())
+
         # 选择引擎
         if model_type == "vision":
             from app.engines.vision_engine import vision_engine

+ 12 - 0
backend/app/preprocessors/__init__.py

@@ -163,6 +163,18 @@ def preprocess_file(
     # 写入处理后的数据
     output_p = Path(output_path)
     output_p.parent.mkdir(parents=True, exist_ok=True)
+
+    # DEBUG: 诊断写入前的权限
+    import os
+    parent = output_p.parent
+    print(f"[DEBUG] output_path={output_path}")
+    print(f"[DEBUG] parent={parent}, exists={parent.exists()}, writable={os.access(parent, os.W_OK)}")
+    print(f"[DEBUG] parent mode={oct(parent.stat().st_mode) if parent.exists() else 'N/A'}")
+    print(f"[DEBUG] uid={os.getuid()}, gid={os.getgid()}")
+    if output_p.exists():
+        print(f"[DEBUG] file exists, mode={oct(output_p.stat().st_mode)}, writable={os.access(output_path, os.W_OK)}")
+        output_p.unlink()
+        print(f"[DEBUG] old file deleted")
     with open(output_path, "w", encoding="utf-8") as f:
         for item in processed:
             f.write(json.dumps(item, ensure_ascii=False) + "\n")

+ 31 - 131
result.txt

@@ -1,131 +1,31 @@
-2026-05-21T01:47:11.109900890Z 2026-05-21 01:47:11 | INFO     | peft-platform | Job 0058e329-ea10-442c-b73f-7f4c64965478 enqueued
-2026-05-21T01:47:11.109996178Z 2026-05-21 01:47:11 | INFO     | peft-platform | Training job created: 0058e329-ea10-442c-b73f-7f4c64965478
-2026-05-21T01:47:11.110042752Z INFO:     172.20.0.4:49694 - "POST /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:47:11.144823215Z 2026-05-21 01:47:11 | INFO     | peft-platform | Preprocessed 60 samples for sft/alpaca
-2026-05-21T01:48:04.173709355Z 2026-05-21 01:48:04 | INFO     | peft-platform | Created remote dataset directory: /root/Fine-tuning/backend/data/datasets
-2026-05-21T01:48:04.173829093Z 2026-05-21 01:48:04 | INFO     | peft-platform | Uploading dataset file: /root/Fine-tuning/backend/data/processed/ms_yanalong_yanalong/data.jsonl -> /root/Fine-tuning/backend/data/datasets/data.jsonl
-2026-05-21T01:48:21.838741471Z 2026-05-21 01:48:21 | INFO     | peft-platform | Dataset uploaded successfully: /root/Fine-tuning/backend/data/datasets/data.jsonl
-2026-05-21T01:48:39.512689216Z 2026-05-21 01:48:39 | INFO     | peft-platform | Remote training launched in container: job=0058e329-ea10-442c-b73f-7f4c64965478, container_pid=13417
-2026-05-21T01:48:39.521386438Z INFO:     127.0.0.1:53180 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:48:39.583985621Z INFO:     127.0.0.1:57590 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:48:39.585257318Z INFO:     127.0.0.1:45468 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:48:39.589332198Z INFO:     172.20.0.4:49706 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:39.589765217Z INFO:     172.20.0.4:49734 - "GET /api/v1/datasets/ HTTP/1.0" 200 OK
-2026-05-21T01:48:39.590556794Z INFO:     172.20.0.4:49722 - "GET /api/v1/models/ HTTP/1.0" 200 OK
-2026-05-21T01:48:39.748227481Z INFO:     172.20.0.4:60052 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:39.750373168Z INFO:     172.20.0.4:48050 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:39.757098923Z INFO:     172.20.0.4:48066 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:40.666272241Z INFO:     172.20.0.4:33146 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:40.717317469Z INFO:     172.20.0.4:33162 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:40.717846223Z INFO:     172.20.0.4:33176 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:40.845138175Z INFO:     172.20.0.4:33190 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:40.847551987Z INFO:     172.20.0.4:33196 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:40.853602270Z INFO:     172.20.0.4:33208 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:41.024102823Z INFO:     172.20.0.4:33210 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:41.078894607Z INFO:     172.20.0.4:33212 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:41.087639834Z INFO:     172.20.0.4:33216 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:41.202428054Z INFO:     172.20.0.4:33230 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:41.206855929Z INFO:     172.20.0.4:33234 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:41.212833698Z INFO:     172.20.0.4:33250 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:41.569479688Z INFO:     172.20.0.4:33260 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:41.924673478Z INFO:     172.20.0.4:33274 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:42.279178087Z INFO:     172.20.0.4:33284 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:44.295821678Z INFO:     172.20.0.4:47720 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:48.415063680Z INFO:     172.20.0.4:47728 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:53.415693496Z INFO:     172.20.0.4:47744 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:48:59.294348762Z INFO:     172.20.0.4:51212 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:49:04.324440751Z INFO:     172.20.0.4:48950 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:49:09.382711419Z INFO:     172.20.0.4:48960 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:49:09.786234680Z INFO:     127.0.0.1:46956 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:49:14.532686614Z INFO:     172.20.0.4:53266 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:49:19.264717001Z INFO:     172.20.0.4:53276 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:49:24.258635581Z INFO:     172.20.0.4:53290 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:49:29.220724780Z INFO:     172.20.0.4:50370 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:49:32.681583269Z 2026-05-21 01:49:32 | INFO     | peft-platform | Remote training launched for job 0058e329-ea10-442c-b73f-7f4c64965478
-2026-05-21T01:49:34.269700667Z INFO:     172.20.0.4:47996 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:49:39.355988204Z INFO:     172.20.0.4:48004 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:49:40.000996955Z INFO:     127.0.0.1:42040 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:49:44.412716600Z INFO:     172.20.0.4:43526 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:49:49.574152785Z INFO:     172.20.0.4:43528 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:49:53.514179915Z INFO:     172.20.0.4:43542 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:49:54.747123812Z INFO:     172.20.0.4:52492 - "GET /api/v1/models/ HTTP/1.0" 200 OK
-2026-05-21T01:49:54.749178772Z INFO:     172.20.0.4:52506 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T01:49:54.751773005Z INFO:     172.20.0.4:52522 - "GET /api/v1/datasets/ HTTP/1.0" 200 OK
-2026-05-21T01:50:10.212679436Z INFO:     127.0.0.1:53658 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:50:40.411802142Z INFO:     127.0.0.1:44742 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:51:10.621501705Z INFO:     127.0.0.1:55778 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:51:40.815979297Z INFO:     127.0.0.1:39202 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:52:11.013485932Z INFO:     127.0.0.1:54368 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:52:41.213441229Z INFO:     127.0.0.1:59480 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:53:11.421541812Z INFO:     127.0.0.1:33758 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:53:41.628060172Z INFO:     127.0.0.1:60568 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:54:11.823696826Z INFO:     127.0.0.1:45286 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:54:42.030870829Z INFO:     127.0.0.1:33386 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:55:12.226840345Z INFO:     127.0.0.1:33020 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:55:42.421509542Z INFO:     127.0.0.1:41274 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:56:12.626627017Z INFO:     127.0.0.1:50616 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:56:42.828189828Z INFO:     127.0.0.1:46986 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:57:13.026982928Z INFO:     127.0.0.1:41904 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:57:43.233186933Z INFO:     127.0.0.1:33734 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:58:13.439083873Z INFO:     127.0.0.1:40796 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:58:43.632010887Z INFO:     127.0.0.1:44992 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:59:13.822666634Z INFO:     127.0.0.1:59208 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T01:59:44.026399435Z INFO:     127.0.0.1:38648 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T02:00:14.226886596Z INFO:     127.0.0.1:54064 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T02:00:44.424181719Z INFO:     127.0.0.1:50078 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T02:01:14.620781297Z INFO:     127.0.0.1:51844 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T02:01:44.827380744Z INFO:     127.0.0.1:36894 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T02:02:15.027961837Z INFO:     127.0.0.1:48112 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T02:02:45.225554977Z INFO:     127.0.0.1:54346 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T02:03:15.408360474Z INFO:     127.0.0.1:37464 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T02:03:45.614449728Z INFO:     127.0.0.1:47460 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T02:03:46.683217262Z INFO:     172.20.0.4:36286 - "GET /api/v1/datasets/ HTTP/1.0" 200 OK
-2026-05-21T02:03:46.685006635Z INFO:     172.20.0.4:36284 - "GET /api/v1/models/ HTTP/1.0" 200 OK
-2026-05-21T02:03:46.701161130Z INFO:     172.20.0.4:36302 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:03:49.880916877Z 2026-05-21 02:03:49 | INFO     | peft-platform | Job 20cbc0c5-c946-4166-9e21-a5a96e49a0da enqueued
-2026-05-21T02:03:49.880999807Z 2026-05-21 02:03:49 | INFO     | peft-platform | Training job created: 20cbc0c5-c946-4166-9e21-a5a96e49a0da
-2026-05-21T02:03:49.881287849Z INFO:     172.20.0.4:36314 - "POST /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:03:49.916125486Z INFO:     172.20.0.4:36328 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:03:49.916599993Z INFO:     172.20.0.4:36334 - "GET /api/v1/models/ HTTP/1.0" 200 OK
-2026-05-21T02:03:49.917107436Z INFO:     172.20.0.4:36344 - "GET /api/v1/datasets/ HTTP/1.0" 200 OK
-2026-05-21T02:03:49.926395292Z 2026-05-21 02:03:49 | INFO     | peft-platform | Preprocessed 60 samples for sft/alpaca
-2026-05-21T02:04:42.993163235Z 2026-05-21 02:04:42 | INFO     | peft-platform | Created remote dataset directory: /root/Fine-tuning/backend/data/datasets
-2026-05-21T02:04:42.993253916Z 2026-05-21 02:04:42 | INFO     | peft-platform | Uploading dataset file: /root/Fine-tuning/backend/data/processed/ms_yanalong_yanalong/data.jsonl -> /root/Fine-tuning/backend/data/datasets/data.jsonl
-2026-05-21T02:05:00.606290095Z 2026-05-21 02:05:00 | INFO     | peft-platform | Dataset uploaded successfully: /root/Fine-tuning/backend/data/datasets/data.jsonl
-2026-05-21T02:05:18.249911779Z 2026-05-21 02:05:18 | INFO     | peft-platform | Remote training launched in container: job=20cbc0c5-c946-4166-9e21-a5a96e49a0da, container_pid=13468
-2026-05-21T02:05:18.254300019Z INFO:     127.0.0.1:56600 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T02:05:18.265080495Z INFO:     127.0.0.1:38716 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T02:05:18.272391198Z INFO:     172.20.0.4:47216 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:18.273335631Z INFO:     172.20.0.4:36360 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:18.274492372Z INFO:     172.20.0.4:56370 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:18.327023650Z INFO:     172.20.0.4:47222 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:18.327542598Z INFO:     172.20.0.4:56372 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:18.336483570Z INFO:     172.20.0.4:39232 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:18.337960844Z INFO:     172.20.0.4:39260 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:18.338744709Z INFO:     172.20.0.4:39244 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:18.346357992Z INFO:     172.20.0.4:47686 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:18.353132349Z INFO:     172.20.0.4:39272 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:18.356354467Z INFO:     172.20.0.4:39278 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:18.359993317Z INFO:     172.20.0.4:39292 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:18.360741798Z INFO:     172.20.0.4:39296 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:18.362382848Z INFO:     172.20.0.4:39302 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:18.366195990Z INFO:     172.20.0.4:39318 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:18.385026274Z INFO:     172.20.0.4:39328 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:18.403020326Z INFO:     172.20.0.4:39330 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:18.416811808Z INFO:     172.20.0.4:39334 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:21.677266126Z INFO:     172.20.0.4:39344 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:26.680936364Z INFO:     172.20.0.4:55946 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:31.689596760Z INFO:     172.20.0.4:55952 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:36.058520743Z INFO:     127.0.0.1:55854 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T02:05:36.682980862Z INFO:     172.20.0.4:52090 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:41.698651214Z INFO:     172.20.0.4:52098 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:46.685679051Z INFO:     172.20.0.4:48708 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:51.677681149Z INFO:     172.20.0.4:48714 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:05:56.690184509Z INFO:     172.20.0.4:59618 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:06:01.687375102Z INFO:     172.20.0.4:59620 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:06:06.247031201Z INFO:     127.0.0.1:47362 - "GET /health HTTP/1.1" 200 OK
-2026-05-21T02:06:06.675681448Z INFO:     172.20.0.4:47818 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:06:11.397601402Z 2026-05-21 02:06:11 | INFO     | peft-platform | Remote training launched for job 20cbc0c5-c946-4166-9e21-a5a96e49a0da
-2026-05-21T02:06:11.676153875Z INFO:     172.20.0.4:47826 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:06:16.705429798Z INFO:     172.20.0.4:39082 - "GET /api/v1/training/jobs HTTP/1.0" 200 OK
-2026-05-21T02:06:36.453888365Z INFO:     127.0.0.1:34720 - "GET /health HTTP/1.1" 200 OK
+(base) [root@localhost ~]# docker exec finetune-trainer id
+uid=0(root) gid=0(root) groups=0(root)
+(base) [root@localhost ~]# docker exec finetune-trainer ls -la /root/Fine-tuning/backend/data/processed/
+total 160
+drwxrwxrwx. 1 root root 4096 May 21 10:14 .
+drwxrwxrwx. 1 1000 1000 4096 May 21 10:10 ..
+drwxrwxrwx. 1 root root 4096 May 20 00:50 ._____temp
+-rwxrwxrwx. 1 root root 8287 May 21 09:47 0058e329-ea10-442c-b73f-7f4c64965478_processed.jsonl
+-rw-r--r--. 1 root root 8287 May 21 10:03 20cbc0c5-c946-4166-9e21-a5a96e49a0da_processed.jsonl
+-rwxrwxrwx. 1 root root 8287 May 21 09:27 3296b92a-8bd0-4c26-8c9d-d17778abfa14_processed.jsonl
+-rwxrwxrwx. 1 root root 8287 May 20 11:31 35949b14-2872-47b4-9fdc-b87bda7279ef_processed.jsonl
+-rwxrwxrwx. 1 root root 8287 May 21 09:23 7aa39fbf-b396-422d-82c9-73044ee4397e_processed.jsonl
+-rwxrwxrwx. 1 root root 8287 May 20 11:48 7bcbc0bb-72c7-408f-a4c6-c38fb05b8382_processed.jsonl
+-rwxrwxrwx. 1 root root 8287 May 20 13:53 92a0a9cd-46aa-48bc-b7ad-bd5a18270c51_processed.jsonl
+-rw-r--r--. 1 root root 8287 May 21 10:10 9b7a9050-d1ec-405b-a8f0-6df562437794_processed.jsonl
+-rwxrwxrwx. 1 root root 8287 May 20 13:12 a52d395e-d3c8-40d2-9be3-1839f597dc7f_processed.jsonl
+-rwxrwxrwx. 1 root root 8287 May 20 14:27 aa342346-a39e-4644-9a34-f3a9d3b961f8_processed.jsonl
+-rwxrwxrwx. 1 root root 8287 May 20 12:03 cce886de-4dd5-460a-b0ac-2404731cd9f8_processed.jsonl
+-rwxrwxrwx. 1 root root 8287 May 20 11:38 d0412da9-b6d0-4ecf-8ae9-35600353bf3e_processed.jsonl
+drwxrwxrwx. 1 root root 4096 May 20 11:31 ms_yanalong_yanalong
+-rw-r--r--. 1 1000 1000    0 May 21 10:14 test_write
+(base) [root@localhost ~]# docker exec finetune-trainer touch /root/Fine-tuning/backend/data/processed/test_container && echo "容器内成功" || echo "容器内失败"
+容器内成功
+(base) [root@localhost ~]# docker inspect finetune-trainer | grep -A5 '"Mounts"'
+        "Mounts": [
+            {
+                "Type": "bind",
+                "Source": "/root/Fine-tuning/backend",
+                "Destination": "/root/Fine-tuning/backend",
+                "Mode": "",
+(base) [root@localhost ~]#