前言
近段時間,ml-agent升級到了v0.3版本,做了一些變更,導致之前的文檔《ml-agent v0.2:Win10下環境安裝》部分內容無法在ml-agent v0.3中使用。最主要的是ppo.ipynb文件移除,導致無法用ppo.ipynb進行訓練。所以這里進行重新整理。
參考文檔
- Migrating to ML-Agents v0.3
- Getting Started with the 3D Balance Ball Environment
- Training ML-Agents
- ml-agent v0.2:Win10下環境安裝
軟件安裝
推薦的環境
- Phython3 64位(ml-agent v0.3不再支持Phython2)
- Jupyter notebook
- TensorFlow
- Visual Studio 2017
- Unity3d 2017.1(本文使用)/2018.1
1、克隆ml-agent
從Github網站上https://github.com/Unity-Technologies/ml-agents克隆(下載)ml-agent,代碼,放在任意位置下。(本文放在D:\ml-agent)
2、安裝Visual Studio/Unity3d
安裝略過
3、安裝Anaconda 64位
Anaconda內置了Phython3 64位和Jupyter notebook以及其他便利的功能,所以還是選擇安裝Anaconda簡化整個Phython的過程。下載地址https://www.anaconda.com/download/#windows。安裝略過(本文安裝在F盤)。安裝完成后利用Anaconda的Anaconda Navigator創建一個環境(這里環境名為tensorflow),Phython版本選擇3.6。
4、安裝ml-agent依賴庫
在開始菜單中打開Anacoda Prompt,在命令行中輸入一下命令來激活剛剛創建的環境
activate tensorflow
輸入命令切換到ml-agent所在的目錄中python目錄的位置。比如ml-agent安裝目錄為D:\Git\ml-agent,則輸入
cd D:\Git\ml-agent\python
如果你的Anaconda不是安裝在ml-agent目錄相同的磁盤,那么需要切換到ml-agen所在的磁盤。比如這里Anaconda的安裝目錄為F盤,ml-agent安裝目錄為D:\ml-agent,則需要切換到D盤,輸入
D:
然后開始安裝Demo所需的環境,輸入命令
pip install .
注意,不要遺漏最后的點號。等待安裝完成即可。該命令會安裝所有的依賴庫,包括tensorflow。此時不用關閉這個窗口。
5、編譯Unity程序
使用Unity2017打開ml-agent下unity-environment文件夾。
打開Assets\ML-Agents\Examples\3DBall目錄下的3DBall場景文件。在場景中選擇Ball3DAcademy下的Ball3DBrain物體,將TypeOfBrain修改為External,表示從Tensorflow中獲取數據。
菜單中選擇File->Build Setting,添加當前所在場景。(可以勾選Development Build以便查看輸出)
點擊PlayerSeting,檢查設置
Resolution and Presentation -> 勾選Run in Background
Resolution and Presentation -> Display Resolution Dialog設置為disable
回到Build Setting面板,點擊Build,編譯到ml-agent的python目錄中。名為3dball.exe
6、開始訓練
注意,訓練方法和ml-agent v0.2不同。v0.2使用Jupyter notebook運行ppo.ipynb文件。但是v0.3改為使用命令行的方法。
我們回到Anacoda Prompt,輸入以下命令:
python learn.py 3dball --run-id=test --train
其中
- learn.py包含了大量的ml算法,包括ppo。
- 3dball就是剛剛我們用unity生成的exe文件的名稱。
- --run-id=test可以不寫,只是聲明這次訓練的id。比如可以用tensorboard來看
- --train表示聲明執行的是訓練模式
如果這這些命令參數感興趣,請參考Training ML-Agents
由於訓練的Step為5.0e4(5*10的4次方),如果用cpu算比較慢,可以暫時修改超參數配置文件trainer_config.yaml,將Ball3DBrain下增加一行max_steps: 2.0e4(注意,由於該文件采用yaml格式,對文件的編碼格式和空格要求非常嚴格,如果異常,將無法進行訓練。max前面有4個空格,不是tab。冒號后面有一個空格,整個文件采用UTF8編碼)。
訓練結果數據保存在models\test\下,使用bytes文件請參考ML-Agent:通過TF#使用訓練完成的模型數據
訓練的結果視頻:Unity ml-agent v0.3實踐