微信團隊開源圍棋AI技術PhoenixGo,復現AlphaGo Zero論文

2020-12-03 機器之心Pro

本文介紹了騰訊微信翻譯團隊開源的人工智慧圍棋項目 PhoenixGo,該項目是對 DeepMindAlphaGo Zero論文《Mastering the game of Go without human knowledge》的實現。

PhoenixGo 是騰訊微信翻譯團隊開發的人工智慧圍棋程序。據介紹,該項目由幾名工程師在開發機器翻譯引擎之餘,基於 AlphaGo Zero 論文實現,做了若干提高訓練效率的創新,並利用微信伺服器的閒時計算資源進行自我對弈,緩解了 Zero 版本對海量資源的苛刻需求。

4 月底,在 2018 世界人工智慧圍棋大賽上,PhoenixGo 取得冠軍。參賽隊伍包括絕藝,LeelaZero、TSGo、石子旋風、Golois,HEROZ Kishi、Baduki 等來自中、日、韓、歐美等國家和地區的人工智慧圍棋高手。

5 月 11 日,PhoenixGo 在 Github 上正式開源,以下是技術細節:

項目地址:https://github.com/Tencent/PhoenixGo

如果你在研究中使用 PhoenixGo,請按以下方式引用庫:

@misc{PhoenixGo2018,author = {Qinsong Zeng and Jianchang Zhang and Zhanpeng Zeng and Yongsheng Li and Ming Chen and Sifan Liu}title = {PhoenixGo},year = {2018},journal = {GitHub repository},howpublished = {\url{https://github.com/Tencent/PhoenixGo}}}

構建和運行

在 Linux 上

1 要求

支持 C++11 的 GCC;Bazel(0.11.1);(可選)CUDA 和 cuDNN(支持 GPU);(可選)TensorRT(加速 GPU 上的計算,建議使用 3.0.4 版本)。

2 構建

複製庫,並進行構建配置:

git clone https://github.com/Tencent/PhoenixGo.gitcd PhoenixGo./configure

./configure 將詢問 CUDA 和 TensorRT 的安裝位置,如果必要指定二者的位置。

然後使用 bazel 進行構建:

bazel build //mcts:mcts_main

TensorFlow 等依賴項將會自動下載。構建過程可能需要很長時間。

3 運行

下載和提取訓練好的網絡:

wget https://github.com/Tencent/PhoenixGo/releases/download/trained-network-20b-v1/trained-network-20b-v1.tar.gztar xvzf trained-network-20b-v1.tar.gz

以 gtp 模式運行,使用配置文件(取決於 GPU 的數量和是否使用 TensorRT):

bazel-bin/mcts/mcts_main --config_path=etc/{config} --gtp --logtostderr --v=1

該引擎支持 GTP 協議,這意味著它可以和具備 GTP 能力的 GUI 一起使用,如 Sabaki。

--logtostderr 使 mcts_main 向 stderr 寫入日誌消息,如果你想將消息寫入文件,將 --logtostderr 改成 --log_dir={log_dir} 即可。

你可以按照此說明更改配置文件:https://github.com/Tencent/PhoenixGo#configure-guide

4 分布模式

如果不同的機器上有 GPU,PhoenixGo 支持分布式 worker。

構建分布式 worker:

bazel build //dist:dist_zero_model_server

在分布式 worker 上運行 dist_zero_model_server,每個 worker 對應一個 GPU:

CUDA_VISIBLE_DEVICES={gpu} bazel-bin/dist/dist_zero_model_server --server_address="0.0.0.0:{port}" --logtostderr

在 config 文件中填充 worker 的 ip:port(etc/mcts_dist.conf 是 32 個 worker 的配置示例),並運行分布式 master:

bazel-bin/mcts/mcts_main --config_path=etc/{config} --gtp --logtostderr --v=1

在 Windows 上

正在進行。

配置指南

以下是 config 文件中的一些重要選項:

num_eval_threads:應與 GPU 的數量一致;num_search_threads:應比 num_eval_threads * eval_batch_size 大一些;timeout_ms_per_step:每步使用的時間;max_simulations_per_step:每步要做多少模擬;gpu_list:使用哪塊 GPU,用逗號隔開;model_config -> train_dir:訓練好的網絡的存儲目錄;model_config -> checkpoint_path:使用哪個檢查點,如果沒設定,則從 train_dir/checkpoint 中獲取;model_config -> enable_tensorrt:是否使用 TensorRT;model_config -> tensorrt_model_path:如果 enable_tensorrt,使用哪個 TensorRT 模型;max_search_tree_size:樹節點的最大數量,根據存儲容量進行更改;max_children_per_node:每個節點的子節點的最大數量,根據存儲容量進行更改;enable_background_search:在對手下棋的時候思考;early_stop:如果結果不再更改,則 genmove 可能在 timeout_ms_per_step 之前返回;unstable_overtime:如果結果仍然不穩定,則更多地考慮 timeout_ms_per_step * time_factor;behind_overtime:如果贏率低於 act_threshold,則更多地考慮 timeout_ms_per_step * time_factor。

分布模式的選項:

enable_dist:啟動分布模式;dist_svr_addrs:分布式 worker 的 ip:port,多條線,每條線中有一個 ip:port;dist_config -> timeout_ms:RPC 超時。

async 分布模式的選項:

Async 模式是在有大量分布式 worker 的時候使用的(多餘 200),而在 sync 模式中需要過多的 eval 線程和搜索線程。

etc/mcts_async_dist.conf 是 256 個 worker 模式的 config 示例。

enable_async:開啟 async 模式enable_dist:開啟分布模式dist_svr_addrs:每個命令行 ip:port 的多行、用逗號分開的列表eval_task_queue_size:根據分布 worker 的數量調整num_search_threads:根據分布式 worker 的數量調整

參看 mcts/mcts_config.proto 更詳細的了解 config 選項。

命令行選項

mcts_main 接受以下命令行選項:

--config_path:配置文件路徑;--gtp:作為 GTP 引擎來運行,如果禁用,則只能進行 genmove;--init_moves:圍棋棋盤上最初的落子;--gpu_list:覆寫配置文件中的 gpu_list;--listen_port:與 --gtp 一起使用,在 TCP 協議埠上運行 gtp 引擎;--allow_ip:與 --listen_port 一起使用,是允許連接的客戶端 ip 列表;--fork_per_request:與 --listen_port 一起使用,表示是否 fork 每個請求。

Glog 選項還支持:

--logtostderr:向 stderr 寫入日誌消息;--log_dir:向該文件夾中的文件寫入日誌消息;--minloglevel:記錄級別:0 - INFO、1 - WARNING、2 - ERROR;--v:詳細記錄,--v=1 即記錄調試日誌,--v=0 即關閉記錄。

mcts_main --help 支持更多命令行選項。

相關焦點

  • PhoenixGo — 基於 AlphaGo Zero 論文實現的圍棋 AI
    PhoenixGo 是微信翻譯團隊開發的圍棋 AI 程序,基於 AlphaGo Zero 論文實現。具有超越人類棋手的棋力,並於2018年4月在福州舉辦的世界人工智慧圍棋大賽上獲得冠軍。
  • Facebook首次開源超級圍棋AI 復現AI高手AlphaZero
    最近,Facebook的人工智慧研究所(以下簡稱FAIR)宣布,他們開源了自研的圍棋AI訓練模型和代碼。這意味著,你可以隨時隨地和Facebook的人工智慧下圍棋了,而且此圍棋AI程序重現的是名噪一時的AI高手AlphaZero。
  • Facebook首次開源超級圍棋AI,復現AI高手AlphaZero
    最近,Facebook的人工智慧研究所(以下簡稱FAIR)宣布,他們開源了自研的圍棋AI訓練模型和代碼。,做出的開源計算機圍棋程序,也就是說,ELF OpenGo不使用人類棋譜與累積的圍棋知識,僅使用單一類神經網絡從自我對弈中學習。
  • AlphaGo Zero用40天成為世界最強圍棋AI
    AlphaGo的論文發布早就有預告,有預兆,並非突如其來,石破天驚……但當它就這樣出現,糊在小編臉上,還是顯得那麼讓人震撼……論文摘要在另一篇置頂文已經有了,這裡只是略微補全一些周邊信息。棋士柯潔:一個純淨、純粹自我學習的alphago是最強的...對於alphago的自我進步來講...人類太多餘了
  • 【話題】AlphaGo Zero!圍棋之神真來了……
    在10月19日世界《自然》雜誌上線的重磅論文中,詳細介紹了谷歌DeepMind團隊最新的研究成果。阿爾法元完全從零開始,不需要任何歷史棋譜的指引,更不需要參考人類任何的先驗知識,完全靠自己強化學習和參悟, 棋藝增長遠超阿爾法狗,百戰百勝,擊潰阿法爾狗100比0。
  • 谷歌團隊發布AlphaGo Zero:柯潔稱人類太多餘了
    【中關村在線新聞資訊】10月19日消息,今天谷歌旗下人工智慧團隊DeepMind在今天對外發布了一款全新的AlphaGo程序。這款軟體名為AlphaGo Zero,與之前擊敗了李世石的AlphaGo Master進行對弈,勝率高達100%。
  • 教程:如何動手打造屬於自己的AlphaGo Zero?
    ,他也是創業公司Rossum.ai的創始人。我當時編寫了當時最強大的開源程序Pachi,後來又發布了一個演示性程序Michi(這是一個簡約的圍棋蒙特卡洛搜尋引擎,僅有550行Python代碼)。幾個月後,Google DeepMind宣布了他們的AlphaGo程序在神經網絡應用方面取得的重大突破(雷鋒網按:即AlphaGo戰勝歐洲冠軍樊麾);同時我也將神經網絡的研究應用在了自然語言處理領域上。
  • 關於AlphaGo 論文的閱讀筆記
    文章首發於其微信公眾號「木遙」,你也可以關注他的個人博客「木遙的窗子」。 2016 年 1 月 28 日,Deepmind 公司在 Nature 雜誌發表論文 Mastering the game of Go with deep neural networks and tree search,介紹了 AlphaGo 程序的細節。
  • AI要完爆人類?解密AlphaGo Zero中的核心技術
    要想理解為什麼,首先從圍棋這個遊戲說起。圍棋是一種對弈遊戲,具體來說就是信息透明,規則透明,結構明確,並且可用規則是可以窮舉的。而如果到了一些數據無法窮舉的領域,如語音識別,圖像識別,自動駕駛等,AlphaGo Zero中的算法很難遷移過來,也很難「無師自通」。那AlphaGo Zero中的算法可以借鑑到哪些領域?他的核心技術是什麼?他的偉大之處又是在哪裡?
  • 微信AI圍棋絕殺同門師兄「絕藝」,國產AI圍棋崛起
    Phoenix Go是微信翻譯團隊開發的人工智慧圍棋,算是「絕藝」的小弟,它們兩個都出自騰訊,可謂「同根生」。它基於AlphaGo Zero論文實現,同時做了若干提高訓練效率的創新,並利用微信伺服器的閒時計算資源進行自我對弈。本自同根生,相煎就是這麼急。
  • 柯潔終結41連勝圍棋AI:稱其實力遠超初代AlphaGo
    人類AI圍棋之爭,還在繼續。今年5月底,人機圍棋大戰終極對決,最終世界排名第一的柯潔九段和AlphaGo的圍棋終極人機大戰以0:3完敗。賽後,柯潔在接受採訪時直言,AlphaGo太完美,看不到任何勝利的希望。
  • 【2017最佳機器學習論文】AlphaGo Zero最賞心悅目(一文讀懂大咖...
    no-limit poker: Libratus beats top professionals  最賞心悅目的論文  Mastering the Game of Go without Human Knowledge 是 DeepMind 團隊關於 AlphaGo Zero 的論文,發表於 Nature 期刊。
  • 谷歌大腦提出AutoML-Zero,只會數學運算就能找到AI算法|開源
    接著谷歌又推出了AlphaGo Zero,只讓AI知道圍棋規則,從零開始學下棋,結果再次登上棋藝頂峰。AI既然能從零學習圍棋,是否可以從零開始摸索機器學習算法?當然可以,谷歌大腦團隊最新的研究成果已經做到了。谷歌將這種技術稱之為AutoML-Zero,意為「從零開始的自動機器學習」,已經在GitHub開源,並在Arxiv上提交了論文。
  • AlphaGo 圍棋教學工具已發布
    在Deepmind所謂的「教學工具」發布之前,小編曾在腦海出現萬千猜想……但今天揭底才知道,原來只是一個平平淡淡的網頁……(建議複製到電腦上打開,因為據有的棋友反映手機打不開,小編這裡實測手機能打開,只是讀取了較長時間)https://alphagoteach.deepmind.com
  • ResNet成為AlphaGo Zero核心技術,孫劍詳解Zero的偉大與局限
    td=4231978320026大會官網:http://www.aiworld2017.com作者:聞菲 【新智元導讀】DeepMind迄今最強棋手AlphaGo Zero橫空出世,其中一個重要組成部分是出自華人團隊的深度殘差網絡ResNet
  • 孫劍解讀AlphaGo Zero:圍棋有了終極的解
    因為圍棋和打麻將或者德州撲克不一樣,在圍棋規則內所有信號全部是靠觀測的,像打麻將或者博弈的遊戲,對手是不能觀測的,這也是不一樣的一點。第二個核心技術,他們用了一個深度最深可以達到80的一個深度殘差卷積神經網絡,這個網絡在學術上英文名詞叫ResNet,這個我也是非常容幸,因為我是這個論文的作者之一,ResNet的工作是我在2015年的時候,在微軟亞洲研究院領導的視覺計算小組做的工作,這個工作核心思想是我們用一個殘差學習,讓非常深的網絡可以很好的學習,其中「非常深」是什麼概念?
  • 阿爾法狗之後的圍棋世界
    在阿法狗之前,很多圍棋ai也走出人類所不能理解的變化和對定式的改變,但人類認為那是ai水平不足,並不足以採信,但由於阿法狗的無敵戰績,現在職業棋手已經對這些新的變化非常認可並且推崇,目前職業比賽裡,狗狗流的下法已經非常普遍,而且喜歡走狗狗流的棋手,戰績一般還都不錯。現在幾乎每三盤職業比賽裡,都能看到一盤狗狗改良版的三三定式。
  • AI要完爆人類?一文讀懂AlphaGo Zero的偉大與局限
    要想理解為什麼,首先從圍棋這個遊戲說起。圍棋是一種對弈遊戲,具體來說就是信息透明,規則透明,結構明確,並且可用規則是可以窮舉的。而如果到了一些數據無法窮舉的領域,如語音識別,圖像識別,自動駕駛等,AlphaGo Zero中的算法很難遷移過來,也很難「無師自通」。那AlphaGo Zero中的算法可以借鑑到哪些領域?他的核心技術是什麼?他的偉大之處又是在哪裡?
  • 來2050「天壤AI圍棋論道」,看圍棋第一人樸廷桓與AI對決
    現圍棋世界第一人樸廷桓,中國女子圍棋世界冠軍宋容慧、唐奕,中國女子國旗職業棋手趙貫汝,職業八段、著名圍棋評論家曹志林,甚至與柯潔對戰的機械臂等等,都將重磅亮相這場圍棋論道。屆時,現世界圍棋第一人—樸廷桓九段,也將於天壤AI圍棋手談一局,還將與現場棋迷交流學棋經歷和感受,分享他和AI交流的心得,探索圍棋新的下法和更廣大的世界。此外,天壤團隊也將展示圍棋AI可以為圍棋提供的輔助功能,如國手人機協作的對弈,機器輔助的講解,AI輔助復盤等等。
  • 《阿爾法圍棋》出紀錄片了
    據說,上海國際電影節紀錄片單元精選了五部關於人生作品:《我是另一個你》、《薩滿之前》、《人生果實》、《阿爾法圍棋》、《小智慧》。《阿爾法圍棋》?我的天哪,阿爾法圍棋要登上上海國際電影節?稍微有點遺憾的是,這電影講的是李世石和阿爾法圍棋的故事。