Facebook 開源 AI 圍棋源代碼,擊敗職業棋手只需一塊GPU
雷鋒網 AI 科技評論消息:5 月 2 日,Facebook AI Research(FAIR)官網博客中宣布開源其 AI 圍棋機器人 ELF OpenGo(包括源代碼和一個訓練好的模型),該機器人是基於 ELF 平台研發而成,曾擊敗了 4 位世界排名前 30 的圍棋棋手。
據雷鋒網了解,該工作主要是受啟於 DeepMind 的工作。今年早些時候 FAIR 啟動了該項工作,期望基於其進行強化學習研究而開發的可擴展、輕量級框架(Extensible Lightweight Framework,ELF)再現 AlphaGoZero 最近的結果。其目的則是創建一個開源實現的系統,該系統能夠自學圍棋進而達到人類職業棋手的水平或更高水平;同時他們也希望通過發布的代碼和模型,激勵更多的人去思考這項技術新的應用和研究方向。
據這個項目的負責人田淵棟介紹,他們用了兩千塊 GPU 訓練該模型,約兩到三周後得到當前版本的圍棋 AI模型,該模型基本上超過了強職業棋手的水平。ELF OpenGo 在與世界排名前 30 的四位職業圍棋棋手(金志錫,申真諝,朴永訓及崔哲瀚)的對弈中,OpenGo 以 14:0 的成績贏得了所有的比賽;在比賽中OpenGo使用單塊 GPU 每步50秒的搜索時間(每步搜索 8 萬個局面),而人類棋手可以有任意長時間的思考。
另外,ELF OpenGo 在與目前公開可用的、最強的圍棋機器人 LeelaZero 的對一種,後者採用了除ponder外的預設配置,以及公開權重(192x15,158603eb, Apr. 25, 2018),結果 OpenGo 贏得了全部 200 場比賽。
田淵棟博士隨後在知乎上發表的一篇感想文章中提到,OpenGo 這個項目「不是為了做最好的圍棋程序,不是說要打敗誰」。之所以做這個項目有三個目的:
(1) AlphaGoZero/AlphaZero 演算法很有意思,我們想知道為什麼它有效果,是怎麼會有效果的,是不是如同宣傳的那樣是百試百靈的通用演算法,是不是只要堆機器,強人工智慧馬上就來了?還是說其實這個演算法有什麼問題和弱點?DeepMind 不開源也不透露細節,文章裡面一些地方也沒有寫得很清楚。我之前寫過 Blog 討論過,但是沒有第一手經驗總不是很踏實。所以本著研究目的,我們需要復現一下,先有復現,才有創新,這個是做研究的習慣。
(2) 今年年初我重寫了 ELF 的核心代碼,另外也加了分散式訓練,需要找個具體應用來測試一下。站在這個角度上,AlphaGoZero/AlphaZero 是個完美的選擇,再說之前也有 DarkForest 的代碼和圍棋程序的經驗,所以把它們拼起來不用花太多力氣。
(3) 不管是通用演算法還是分散式平台,都可以用來干很多別的事情,不一定是圍棋,不一定是遊戲。如果我們去看 ELF OpenGo 的代碼,會發現其實很大一部分和圍棋一點關係也沒有,完全適用於其它方向的工作。而圍棋對我們來說,只是一個把演算法和平台做好的手段。在這一點上,花點時間把圍棋做好是值得的。
田淵棟博士表示,隨著今天 ELF OpenGo 的發布,這三個目的都已達到。當然,他們更希望的是能夠藉此機會推廣一下 ELF 平台和 PyTorch 深度學習框架,讓更多的人使用和完善它。
代碼見:https://github.com/pytorch/ELF
模型見:https://github.com/pytorch/ELF/releases
英文 blog 見:https://research.fb.com/facebook-open-sources-elf-opengo/
ELF 平台ELF 平台是一個可擴展、輕量級且非常靈活的遊戲研究平台,尤其適用於實時戰略(RTS)遊戲的研究,於 2016 年 6 月首次發布。
在 C++端,ELF 與 C++線程同時託管多個遊戲;而在 Python 端,ELF 可以一次返回一批遊戲狀態,這使得其對現代的強化學習非常友好。相比之下,其他平台(例如 OpenAI Gym)則只是使用一個 Python 界面封裝一個單一的遊戲,這種情況使得並發遊戲(許多現代的強化學習演算法都有此要求)的執行就變得比較複雜。
ELF 具有以下特徵:
端到端:ELF 為遊戲研究提供了端到端的解決方案。它提供微型實時策略遊戲環境、並行模擬、直觀的 API、基於 Web 的可視化,並且還具有由 Pytorch 授權的強化學習後端,資源需求最少。
可擴展性:任何具有 C / C ++介面的遊戲都可以通過編寫一個簡單的包裝器插入到這個框架中。
輕量級:ELF 運行速度非常快,開銷很小。在一台 MacBook Pro 上,基於 RTS 引擎構建的簡單遊戲(MiniRTS)使用 ELF 平台,能夠單核每秒運行 40K 幀;而只使用 6 塊 CPU+1 塊 GPU 從零開始訓練 MiniRTS,也只需要六天。
靈活性:環境和參與者之間的配對非常靈活。例如單個 agent 與單個環境(例如 Vanilla A3C)、多個 agent 與單個環境(Self-play/MCTS),或者單個 agent 與多個環境(BatchA3C、GA3C)等。而且,任何構建在 RTS 引擎之上的遊戲都可以完全訪問其內部表示和動態。
隨著這次 OpenGo 的開源,FAIR 也對 ELF 平台進行了改進,升級了更高效、更友好的 API 以及支持對數千台計算機進行分散式計算的框架。作為 PyTorch 的一部分,ELF 能夠是研究人員能輕鬆地嘗試不同的強化學習思想,並進行快速、靈活的實驗。
雷鋒網報道。
※投資人跨界造車,紫輝創投合伙人鄭剛劍指新能源陣地的勇氣何在?
※AITech 次日,腦科學、智能外科、多模態智能等多個話題引熱議
TAG:雷鋒網 |