Unity Dummy X (virtual display) on PAIA 3D
雲與地的彼端 — 全面啟動PAIA 3D之K8S混合雲部署
Published in
4 min readDec 16, 2023
這篇文章來自於近日與學生們參與Taipei GDG Devfest的講題中,提到3D遊戲如何從地端被執行,並將影片傳給雲端播放的部份內容。
The script to execute training and inferencing of paiagym game:
#!/bin/bash
NAME=$1
MAX_EPOCH=$2
ARG="python3 /home/PAIA/define_epoch.py $MAX_EPOCH; chmod 777 training.sh ; chmod 777 inferencing.sh ; ./training.sh ; ./inferencing.sh"
CUR_PATH="$(pwd)/model_storage/"
TAR_PATH=$CUR_PATH$NAME
echo $TAR_PATH
mkdir -p model_storage
cd model_storage
mkdir -p "$NAME"
cd ..
chmod -R 777 model_storage
echo "Folder Created!!"
docker run --name $NAME -v $TAR_PATH:/home/PAIA/volume -it unity-funai:latest /bin/bash -c "$ARG"
echo "Process End!!"
Training.sh
#!/bin/bash
MAX_EPOCH=$1
echo "RUNNING THE TRAINING PROCESS"
# 變更執行檔權限,讓使用者可以執行
chmod -R 755 /home/PAIA/kart/Linux/kart.x86_64
# 更改工作目錄到主要運行處
cd /home/PAIA
# 啟用訓練.env
mv .env.training .env
# 建立虛擬螢幕X並讓他在背景執行
X -config dummy-1920x1080.conf &
# 虛擬螢幕建立後會在DISPLAY的0號接口接收
# DISPLAY:=0 讓Unity可以在0號接口上執行
DISPLAY=:0 python3 ml.py
# 停用訓練.env
mv .env .env.training
Inferencing.sh
#!/bin/bash
echo "RUNNING THE INFERENCING PROCESS"
chmod -R 755 /home/PAIA/kart/Linux/kart.x86_64
# 移動至當前工作目錄
cd /home/PAIA
X -config dummy-1920x1080.conf &
# 啟用執行.env
mv .env.inferencing .env
# 虛擬螢幕建立後會在DISPLAY的0號接口接收
# DISPLAY:=0 讓Unity可以在0號接口上執行
DISPLAY=:0 python3 ml.py
# 停用執行.env
mv .env .env.inferencing
# 複製使用者影片至與host相連的volume
chmod -R 755 /home/PAIA/records/*
cp /home/PAIA/records/kart/* /home/PAIA/volume
但以上是在CPU的狀況,如果要在Docker裡面使用GPU,則需要再做額外的設定。
包含一定要使用nvidia/cudagl這個image,才可以在Docker 內使用 GPU。
原先虛擬螢幕X 要裝在 Docker 外面,並在容器內掛載 Volume:/tmp/.X11-unix,讓容器內部可以連接容器外的虛擬螢幕。
sudo nvidia-xconfig -a --allow-empty-initial-configuration --virtual=3840x2160
完整的script可以參考學生頌宇開放的paiagym原始碼中的display.sh。