行 GameAISDK 與 SDKTool 完整指南(含 socat / XQuartz / adbkit 環(huán)境搭建))
人工智能強(qiáng)化學(xué)習(xí)計(jì)算機(jī)視覺游戲開發(fā)測試【免費(fèi)下載鏈接】GameAISDK基于圖像的游戲AI自動(dòng)化框架項(xiàng)目地址https://gitcode.com/gh_mirrors/ga/GameAISDK點(diǎn)擊查看免費(fèi)下載本篇技術(shù)指南聚焦于如何在 macOS 母機(jī)上通過 Docker 容器方式運(yùn)行基于圖像的游戲 AI 自動(dòng)化框架 GameAISDK 及其配套可視化配置工具 SDKTool。文章完整覆蓋從基礎(chǔ)環(huán)境安裝Docker、socat、XQuartz、adbkit、鏡像導(dǎo)入與容器掛載、容器內(nèi)動(dòng)態(tài)庫配置、圖形顯示鏈路打通、Android 手機(jī) TCP 橋接到最終啟動(dòng) SDKTool 的每一個(gè)關(guān)鍵步驟。讀完本文你將能夠在 Mac 上獨(dú)立搭建一套容器跑 AI、母機(jī)出界面、手機(jī)供圖像的完整可運(yùn)行環(huán)境并掌握 Docker 部署 AISDK 的底層原理。一、部署方案與整體架構(gòu)GameAISDK 本身是運(yùn)行在 Linux 環(huán)境下的圖像識(shí)別與 AI 推理框架。為了讓 Windows / macOS 用戶也能直接使用官方提供了基于 Docker 的部署方案AISDK 與 SDKTool 運(yùn)行在 Linux 容器中而消費(fèi) AISDK 服務(wù)的 AIClient 依舊運(yùn)行在母機(jī)上見 doc/dockerdeployment/UseGuide.md。對(duì)于 SDKTool 這類帶界面的工具則通過顯示重定向的方式把容器內(nèi)界面顯示到母機(jī)桌面上。因此在 macOS 上需要額外安裝四類工具工具作用安裝方式docker承載 AISDK / SDKTool 的 Linux 運(yùn)行環(huán)境brew install dockersocat打通容器與 macOS 主機(jī)之間的通訊X11 轉(zhuǎn)發(fā)brew install socatxquartz將容器中顯示的內(nèi)容映射到母機(jī)桌面的 X11 服務(wù)器brew install xquartzadbkit將 USB 連接的 Android 手機(jī)橋接為容器可訪問的 TCP 端口brew install nodenpm i -g adbkit說明Windows 側(cè)對(duì)應(yīng)方案是使用 VcXsrv 替代 XQuartz 完成顯示映射參考 doc/dockerdeployment/BaseInstall.md本文只討論 macOS 環(huán)境。二、基礎(chǔ)環(huán)境安裝以下命令均在 macOS 終端中執(zhí)行前提是本機(jī)已安裝 Homebrew。1. 安裝 Dockerbrew install docker安裝完成后打開 Docker 應(yīng)用并在終端執(zhí)行docker version驗(yàn)證安裝成功能正常輸出版本信息即說明 Docker 服務(wù)可用。2. 安裝 socatbrew install socat # 可能需要 cask 命令安裝: brew cask install socatsocat 是一個(gè)強(qiáng)大的雙向數(shù)據(jù)轉(zhuǎn)發(fā)工具。在本方案中它負(fù)責(zé)把 macOS 本機(jī)的 X11 顯示服務(wù)unix socket暴露為 TCP 端口從而讓容器內(nèi)的圖形程序SDKTool 的 UI能夠把畫面畫到母機(jī)屏幕上。3. 安裝 XQuartzbrew install xquartzXQuartz 是 macOS 下的 X11 顯示服務(wù)器承擔(dān)將容器中顯示的內(nèi)容映射到母機(jī)的角色doc/dockerdeployment/BaseInstall.md 中明確說明容器內(nèi)自身無法顯示、會(huì)報(bào)錯(cuò)必須依賴此類工具。4. 安裝 adbkitbrew install node npm i -g adbkitadbkit 是 Node.js 生態(tài)下的 ADB 客戶端工具包用于把 USB 直連母機(jī)的 Android 手機(jī)橋接成網(wǎng)絡(luò)端口供容器內(nèi)訪問。三、啟動(dòng) Docker 并導(dǎo)入 AISDK 鏡像1. 啟動(dòng) Docker啟動(dòng) Docker DesktopMac 版確認(rèn)其處于運(yùn)行狀態(tài)Docker 圖標(biāo)常駐菜單欄。2. 導(dǎo)入鏡像并運(yùn)行容器官方鏡像默認(rèn)以文件形式分發(fā)導(dǎo)入命令為docker load -i xx其中xx為鏡像文件路徑原文檔寫作docker load -I xx實(shí)際 Docker 參數(shù)為小寫-i即--input。導(dǎo)入完成后以掛載方式啟動(dòng)容器將母機(jī)上的項(xiàng)目目錄映射進(jìn)容器docker run -v /Users/et/Downloads/game_ai_sdk:/data1/game_ai_sdk -it xx /bin/bash參數(shù)說明-v /Users/et/Downloads/game_ai_sdk:/data1/game_ai_sdk把母機(jī)上的 GameAISDK 工程目錄掛載到容器內(nèi)固定路徑/data1/game_ai_sdk。容器內(nèi)的構(gòu)建產(chǎn)物、配置修改都會(huì)實(shí)時(shí)同步回母機(jī)這是后續(xù)在容器中編譯、運(yùn)行的基礎(chǔ)-it以交互模式進(jìn)入容器xx鏡像名稱如836304831/aisdk:tagname或本地導(dǎo)入的鏡像 tag/bin/bash進(jìn)入容器后啟動(dòng) bash shell。該掛載路徑約定與 doc/dockerdeployment/UseGuide.md 中docker run -v /Users/{username}/workspace_code/game_ai_sdk:/data1/game_ai_sdk -it -p 8898:8898 -p 8899:8899 836304831/aisdk:tagname /bin/bash的用法一致若需讓 AISDK 服務(wù)對(duì)外提供端口可額外追加-p 8898:8898 -p 8899:8899暴露服務(wù)端口。四、容器內(nèi)環(huán)境準(zhǔn)備拷貝動(dòng)態(tài)庫進(jìn)入容器后需要先把 AISDK 依賴的共享庫安裝到系統(tǒng)庫目錄cp *.so* /usr/local/lib該命令把工程中的*.so*動(dòng)態(tài)鏈接庫復(fù)制到/usr/local/lib隨后刷新動(dòng)態(tài)鏈接器緩存ldconfigldconfig會(huì)重新掃描并更新動(dòng)態(tài)鏈接庫緩存確保后續(xù)啟動(dòng)程序時(shí)能正確找到剛拷貝的 so 庫。五、打通圖形顯示鏈路socat XQuartzSDKTool 是圖形界面程序運(yùn)行在容器內(nèi)必須把界面畫到 macOS 母機(jī)屏幕上這依賴 X11 協(xié)議鏈路的三個(gè)環(huán)節(jié)。1. 啟動(dòng) socat容器內(nèi)或母機(jī)終端在終端執(zhí)行socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\$DISPLAY\含義拆解TCP-LISTEN:6000,reuseaddr,fork在 TCP 6000 端口監(jiān)聽reuseaddr允許端口快速復(fù)用fork為每個(gè)連接派生子進(jìn)程處理UNIX-CLIENT:$DISPLAY把收到的 TCP 流量轉(zhuǎn)發(fā)到本機(jī) X11 的 unix socket$DISPLAY是 X 顯示服務(wù)地址環(huán)境變量。這樣就建立起容器內(nèi) X11 程序 → TCP 6000 → 母機(jī) X11 socket的轉(zhuǎn)發(fā)通道。啟動(dòng)成功截圖如下2. 啟動(dòng) XQuartz在母機(jī)終端執(zhí)行open -a xquartz打開 XQuartz 應(yīng)用后需要確認(rèn) X11 服務(wù)器處于監(jiān)聽狀態(tài)。3. XQuartz 相關(guān)設(shè)置為保證容器內(nèi)界面正常顯示、鼠標(biāo)鍵盤事件正?;貍餍枰?XQuartz 的偏好設(shè)置中確認(rèn)以下選項(xiàng)對(duì)應(yīng)設(shè)置界面截圖允許網(wǎng)絡(luò)連接允許來自 TCP 的 X 連接啟用粘貼板同步Sync pasteboard與鍵盤輸入同步Sync keyboard便于在容器內(nèi)復(fù)制粘貼文本輸入設(shè)置中勾選遵循 macOS 鍵盤布局Follow system keyboard layout避免中文輸入法或特殊按鍵在容器內(nèi)失效。六、連接 Android 手機(jī)USB 轉(zhuǎn) TCP 橋接AISDK 的圖像識(shí)別數(shù)據(jù)來自 Android 手機(jī)屏幕因此需要讓運(yùn)行在容器內(nèi)的 AI 服務(wù)能訪問到手機(jī)。1. 母機(jī)上查看手機(jī)序列號(hào)adb devices確保手機(jī)開啟 USB 調(diào)試并已連接母機(jī)輸出中會(huì)出現(xiàn)類似xxxxxxxx device的序列號(hào)。2. 將 USB 設(shè)備轉(zhuǎn)發(fā)為 TCP 端口adbkit usb-device-to-tcp -p 7788 序列號(hào)該命令把指定序列號(hào)的 USB 設(shè)備橋接到母機(jī)的7788TCP 端口。轉(zhuǎn)發(fā)成功后母機(jī)上的 7788 端口即代表這臺(tái)手機(jī)。該端口號(hào)與倉庫內(nèi)置一鍵腳本 tools/docker/start_mac_docker.sh 及 Windows 側(cè)腳本 tools/docker/start_win_docker.bat 中使用的-p 7788完全一致。3. 容器內(nèi)連接手機(jī)回到容器終端執(zhí)行adb connect host.docker.internal:7788host.docker.internal是 Docker 提供的特殊域名指向宿主機(jī)macOS。此命令讓容器內(nèi)的 adb 通過母機(jī)的 7788 端口與手機(jī)建立連接返回connected to host.docker.internal:7788即表示鏈路打通。至此完整數(shù)據(jù)鏈路為容器內(nèi) AISDK/adb → host.docker.internal:7788 → 母機(jī) adbkit 橋接 → USB → Android 手機(jī)七、啟動(dòng) SDKTool 工具容器內(nèi)完成上述所有準(zhǔn)備后進(jìn)入 SDKTool 目錄并啟動(dòng)python main.pySDKTool 的入口即倉庫中的 tools/SDKTool/main.py。啟動(dòng)后由于 X11 鏈路已打通界面會(huì)直接顯示在 macOS 母機(jī)桌面上之后就可以進(jìn)行游戲識(shí)別的相關(guān)配置工作。補(bǔ)充若 SDKTool 集成了 AISDK 功能如 doc/dockerdeployment/UseGuide.md 所述容器內(nèi)還需先完成編譯cd /data1/game_ai_sdk/build ./build_modules.sh {GPU|CPU} ./build.sh {GPU|CPU}參數(shù) GPU 或 CPU 依自身環(huán)境決定。八、一鍵啟動(dòng)腳本參考倉庫在 tools/docker/start_mac_docker.sh 中提供了 macOS 側(cè)的自動(dòng)化腳本將上述手工步驟合并為一次執(zhí)行socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\$DISPLAY\ open -a xquartz adb devices |awk NR2 {print $1} |xargs adbkit usb-device-to-tcp -p 7788 path$(dirname $(dirname pwd)) echo project path: $path docker run -v $path:/data1/game_ai_sdk -it base_aisdktoolclt_ubt16:debug-2.0.2 /bin/bash /data1/game_ai_sdk/bin/docker_start_service.sh腳本要點(diǎn)并行后臺(tái)啟動(dòng) socat 與 XQuartz通過adb devices自動(dòng)提取第一個(gè)設(shè)備序列號(hào)交給adbkit usb-device-to-tcp -p 7788完成橋接以當(dāng)前工程目錄的上一級(jí)為掛載源運(yùn)行容器并執(zhí)行容器內(nèi)的服務(wù)啟動(dòng)腳本對(duì)應(yīng) bin/start.sh 中的start_ui_ai.sh/start_ai.sh/start_ui.sh等入口。Windows 側(cè)可參照 tools/docker/start_win_docker.bat流程一致VcXsrv adbkit 7788 容器掛載。九、常見問題與注意事項(xiàng)容器內(nèi)無法顯示界面/報(bào)錯(cuò)多為 X11 鏈路未打通。請(qǐng)依次確認(rèn) socat 正在監(jiān)聽 6000 端口、XQuartz 已啟動(dòng)并允許網(wǎng)絡(luò)連接以及$DISPLAY環(huán)境變量指向正確adb connect 失敗確認(rèn)母機(jī)上adbkit usb-device-to-tcp -p 7788仍在運(yùn)行且手機(jī) USB 調(diào)試授權(quán)已通過adb devices顯示為device而非unauthorized動(dòng)態(tài)庫加載失敗回到容器重新執(zhí)行cp *.so* /usr/local/lib與ldconfig掛載目錄注意-v的左側(cè)路徑必須真實(shí)存在于母機(jī)且為 Docker Desktop 允許共享的目錄macOS 默認(rèn)無需額外配置Windows 需在 Docker Settings → Resources → FILE SHARING 中添加共享目錄見 doc/dockerdeployment/BaseInstall.md鏡像來源官方亦提供在線鏡像docker pull 836304831/aisdk:tagname與docker pull 836304831/sdktool:tagnametag 以實(shí)際發(fā)布為準(zhǔn)使用方式見 doc/dockerdeployment/UseGuide.md。十、總結(jié)本文完整還原了 doc/environment/MacDockerInstall.md 的 macOS Docker 部署流程并結(jié)合 doc/dockerdeployment/BaseInstall.md、doc/dockerdeployment/UseGuide.md 與倉庫腳本 tools/docker/start_mac_docker.sh 對(duì)其原理做了源碼級(jí)說明。核心要點(diǎn)可歸納為四件套依賴Docker 承載運(yùn)行、socat 轉(zhuǎn)發(fā) X11、XQuartz 顯示界面、adbkit 橋接手機(jī)兩條鏈路圖形鏈路容器 → TCP 6000 → XQuartz → 母機(jī)桌面與設(shè)備鏈路容器 → host.docker.internal:7788 → adbkit → USB → 手機(jī)一條命令啟動(dòng)掛載工程后python main.py即可在母機(jī)桌面上使用 SDKTool 完成游戲 AI 配置。贊分享人工智能強(qiáng)化學(xué)習(xí)計(jì)算機(jī)視覺游戲開發(fā)測試【免費(fèi)下載鏈接】GameAISDK基于圖像的游戲AI自動(dòng)化框架項(xiàng)目地址https://gitcode.com/gh_mirrors/ga/GameAISDK點(diǎn)擊查看免費(fèi)下載相關(guān)推薦GameAISDK 容器化部署實(shí)戰(zhàn)使用 Docker 運(yùn)行 AISDK 與 SDKTool 完整指南GameAISDK 容器化部署實(shí)戰(zhàn)使用 Docker 運(yùn)行 AISDK 與 SDKTool 完整指南 本指南基于 GameAISDK 官方文檔 doc/doc人工智能強(qiáng)化學(xué)習(xí)計(jì)算機(jī)視覺游戲開發(fā)測試GameAISDK SDKTool 環(huán)境部署指南Windows 與 Ubuntu 下 Python 環(huán)境搭建與程序啟動(dòng)GameAISDK SDKTool 環(huán)境部署指南Windows 與 Ubuntu 下 Python 環(huán)境搭建與程序啟動(dòng) GameAISDK 是一套基于圖像的游人工智能強(qiáng)化學(xué)習(xí)計(jì)算機(jī)視覺游戲開發(fā)測試GameAISDK 基于 Docker 的基礎(chǔ)環(huán)境部署指南AISDK 與 SDKTool 依賴安裝全流程GameAISDK 基于 Docker 的基礎(chǔ)環(huán)境部署指南AISDK 與 SDKTool 依賴安裝全流程 本文是 GameAISDK 項(xiàng)目 Docker 部署人工智能強(qiáng)化學(xué)習(xí)計(jì)算機(jī)視覺游戲開發(fā)測試上一篇Apereo CAS 屬性釋放策略Attribute Release Policy詳解Return Allowed 白名單精準(zhǔn)放行下一篇終極指南Awesome ChatGPT核心組件詳解與AI應(yīng)用構(gòu)建創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考