Update app.py
Browse files
app.py
CHANGED
|
@@ -233,12 +233,17 @@ import multiprocessing
|
|
| 233 |
|
| 234 |
# 专门为子进程准备的常驻死循环
|
| 235 |
def dagger_worker_process(worker_idx):
|
| 236 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 237 |
torch.set_num_threads(1)
|
| 238 |
os.environ["OMP_NUM_THREADS"] = "1"
|
| 239 |
|
| 240 |
print(f"👷 [Worker {worker_idx}] 启动中,正在加载专属常驻模型...")
|
| 241 |
-
# 子进程独立加载模型,防止多进程共享 PyTorch 对象的内存冲突
|
| 242 |
student_bots = {i: load_model_student(i, STUDENT_MODEL) for i in range(3)}
|
| 243 |
teacher_bots = {i: load_model_teacher(i, TEACHER_MODEL) for i in range(3)}
|
| 244 |
encoder = DAggerEncoder(chunk_size=2048)
|
|
|
|
| 233 |
|
| 234 |
# 专门为子进程准备的常驻死循环
|
| 235 |
def dagger_worker_process(worker_idx):
|
| 236 |
+
# 🚀 核心修复:在子进程内部重新 import,确保它一定能找到环境!
|
| 237 |
+
import os
|
| 238 |
+
import time
|
| 239 |
+
import torch
|
| 240 |
+
|
| 241 |
+
# 强制当前进程只使用 1 个线程,防止多进程抢占 CPU 导致死锁
|
| 242 |
torch.set_num_threads(1)
|
| 243 |
os.environ["OMP_NUM_THREADS"] = "1"
|
| 244 |
|
| 245 |
print(f"👷 [Worker {worker_idx}] 启动中,正在加载专属常驻模型...")
|
| 246 |
+
# 子进程独立加载模型,防止多进程共享 PyTorch 对象的显存/内存冲突
|
| 247 |
student_bots = {i: load_model_student(i, STUDENT_MODEL) for i in range(3)}
|
| 248 |
teacher_bots = {i: load_model_teacher(i, TEACHER_MODEL) for i in range(3)}
|
| 249 |
encoder = DAggerEncoder(chunk_size=2048)
|