號外兩則:
1. elmo 的作者的官方導入文件:
https://mk-takizawa.github.io/elmo/howtouse_elmo.html2. 敝人的 Dockerfile 成品:
https://bitbucket.org/needgem/docker接下來才開始繼續說明.
之前提到如何把 ShogiGUI 放進 Docker, 接著就需要抽換 Engine.
把在容器 linux 底下無法使用的 gpsfish 拿掉的話比較簡單.
首先在解壓縮的時候跳過 gpsfish 目錄,
接著一個 sed 拿掉 settings.xml 的 gpsfish engine block 就好了.
(實際上是去掉 <EngineList> 和 </EngineList> 之間所有的文字)
接著要如何去拿想要的 Engine 呢?
通常的手段如下:
對於有公開原始程式碼的引擎, 使用 git clone 將最新版程式碼提取下來.
接著就 make 編譯 (但是這邊的 linux 機器沒有 AVX2 所以只能編到 sse 4.2 版本)
接下來就需要找到相關的評估參數檔案跟棋譜檔案.
既然 elmo 作者都已經寫出 Windows 導入方式,
這邊詳細的導入方式也僅以 YaneuraOu 和 elmo 作為範例.
YaneuraOu 和 elmo 的引入碼解說
# 首先, 要先把目錄設在預定的根目錄.
WORKDIR /home/shogi
# 接著, 第一步是拿下原始程式碼
RUN git clone https://github.com/yaneurao/YaneuraOu.git && \
# 得到原始碼以後要編譯相對應的執行檔
cd YaneuraOu/source ; make sse42 ; cd ../exe && \
# 把編譯出來的檔案移動到執行檔目錄, 為養成習慣感覺良好.
mv ../source/YaneuraOu-by-gcc YaneuraOu-2017-early ; cd eval && \
# 這邊的範例是提取真 YaneuraOu 的評價參數檔和棋譜檔
# 下載解壓縮以後就把原壓縮檔刪除以節省空間.
# 詳細請參考
YaneuraOu 網頁
gdown "https://drive.google.com/uc?id=0ByIGrGAuSfHHVVh0bEhxRHNpcGc" -O ShinYane.zip && \
unzip ShinYane.zip ; rm ShinYane.zip ; cd ../book && \
gdown "https://drive.google.com/uc?id=0ByIGrGAuSfHHcXRrc2FmdHVmRzA" -O yaneb3.zip && \
unzip yaneb3.zip ; rm yaneb3.zip
如此一來就完成初步部署.
接下來是 elmo 的部署.
# 一樣簡單的設好根目錄, 下載必要檔案解壓縮砍除壓縮檔,
# 但是直接把之前編譯好的 YaneuraOu 執行檔拷貝過去就好了.
WORKDIR /home/shogi
RUN gdown "https://drive.google.com/uc?id=0B0XpI3oPiCmFalVGclpIZjBmdGs" -O elmo.shogi.zip && \
unzip elmo.shogi.zip && rm elmo.shogi.zip && \
cp YaneuraOu/exe/YaneuraOu-2017-early elmo.shogi/YaneuraOu-2017-early
最後最重要的, 還是要自己做出 <Engine> 和 </Engine> 之間的設定碼.
這個需要靠外部的 shell script 導入 docker 容器內完成.
詳情請參考已公開的 docker/ShogiGUI 資料夾中的腳本資訊.
主要就是看 gpsfish 的設定資訊加上自己在實體程式中導入獲得的設定資訊修改而成.
最後就把相對應的 xml 碼區塊擺進 <Engine> 和 </Engine> 之間就大功告成.
所以在最後的 ShogiGUI 目錄中除了 Dockerfile 還需要一個 shell script 來輔助設定.
但是不代表自動設定的部份完成以後就不需要調整設定.
目前在 Bitbucket 上的版本, 自行設定完以後, 開啟 YaneuraOu 以後還需要調整的部份有:
1. CPU 執行緒數, 因為 YaneuraOu 的預設僅為 4,
不像 Apery/技巧等等其他引擎會自動找尋電腦上的 CPU 執行緒數,
所以需要照自己狀況調整.
2. 記憶體容量: 請參考自身記憶體可用容量決定, 這個不會寫死.
3. ConsiderationMode: 因為這邊不自己下只會看所以常常要自己設成 True.
4. elmo 作者提到的部份也可以斟酌修改.
至於拿到 Dockerfile 以後的使用方式, 就是
1. 編譯起來: 需要極大的網路流量! (目前估計要 5GB - 10GB 跑不掉)
cd docker/ShogiGUI
docker build -t shogigui .
2. 執行的話因為需要 X11, 還加上需要分享棋譜存放目錄, 所以大概類似這樣
docker run -it --rm -e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix:ro \
-v /somepath/Kifu:/home/shogi/Kifu:rw shogigui
3. 接著就會看到 ShogiGUI 的畫面.
注意: 本程式可能僅供 Linux/Mac 使用, 需要 Docker,
Mac 的 X11 可能需要透過 Xquartz 達成, 但本人無法測試.
Linux 僅在 ubuntu 上實測過, 希望其他的 linux with X11 也能適用.
Windows 的用戶則
不建議使用此 dockerfile
主因: ShogiGUI 為 Windows 原生程式, 而且 Windows 上可執行的引擎,
遠超過有開放原始程式碼的引擎, 所以並不適合再用 docker 來包裝它.
Windows 要導入 elmo 請參考文件前面提到的 elmo 作者的文件.
---
因為覺得這些都是使用網路上的自由資源 (不該叫免費資源)
寫寫幾個字就能弄得出來, 可能沒有啥技術程度,
藏私沒有用, 也請不要拿來賣... 因為懂門道的話, 大家都會寫, 不值錢.
至於要加入其他的引擎不過是照章運作而已,
目前已公開的版本已經包括:
技巧(Gikou), Apery, YaneuraOu, silent majority (俗稱魔女)
和後三者相對應的引入 elmo 評價參數及棋譜版本.
不過這樣寫完可能就沒有 Part 3 的必要性了, 系列就此結束.