8/13 痞客邦克漏字比賽心得

昨天就是痞客幫克漏字比賽的日子,一大早7點爬起來梳洗一下就出發到現場。然而到達目的地華山文創園區時要找會場在哪時迷路了一下,在裡面繞一繞找不太到會場在哪裡。

進到會場後,痞客邦工作人員帶我到比賽時使用的桌子,組員其他三位都已經到達現場在為今天比賽做準備。由於我們很早就開始討論今天的比賽要怎麼做,所以到了當天只差投影片還沒有開始製作,剩下其實沒多少事。於是我就用當天得時間去詢問 AWS 無法使用 GPU instance 的問題,現場也有 AWS support 人員和工程師在場,過不了多久就順利開起來,原來是 GPU instance 預設限制使用量是0,需要去申請才可以使用。

既然能開啟有 GPU 的環境,那當然就是要嘗試一下利用 GPU 的計算能力來看看我們使用的 RNN 模型有沒有計算比較快。這次比賽時我們就決定好全力嘗試使用 RNN/LSTM 模型,不過過程中沒那麼順利,直到比賽前幾天才弄出了一個可以跑的模型出來。實際開始訓練已經是比賽前一天,而且訓練速度真的是慢的超乎想像,借了一台性能不錯的 server 來跑還是需要好幾個星期才能訓練完畢。不得已,我們只能先拿訓練一部份的結果來先測試看看能不能在比賽時使用。結果是在算預測值時也是需要花上不少時間,無法在比賽時拿出來用。因此在正式比賽時就不是使用 RNN ,而是使用另一組員先建好的 Word2vec 模型。

即使如此,有了 GPU 環境可以使用,不嘗試看看也說不過去。於是整個上午的時間,我都在弄 AWS 環境。嘗試把 tensorflow build 出使用 CUDA 的版本,過程中看似一切都很順利,最後要使用時卻會出現找不到 GPU device 的問題。鑑於時間的關係,就不去找尋找原因,而是改去找別人弄好的還境。這邊還好泡在 tensorflow community 時有看到相關的訊息,因此順利地找到可以使用的環境。

有了神兵利器,該是屠殺獵物的時刻。立即將我們使用的模型拿下去跑。然後…然後它就死了。GPU 的記憶體稱不過大量的文字向量表,真是沒用過不曉得記憶體使用的問題會這麼大。後來嘗試把訓練資料不斷縮小,縮小到剩 20mb 左右才跑得起來。不過即使是這樣的資料量,用 GPU 訓練起來還是需要一兩個小時。所以到此 RNN 就從比賽中出局啦。

剩下的時間就幫忙製作投影片,看一下其他組的成果。其中有一組資料科科家的成果非常驚人,在整場比賽裡丟出來的測試樣本都可以 100% 答對。我們的模型在測試過程中大概排第4名。

到了比賽時間,開始了第一輪淘汰賽。這時戲劇性的結果出現了,資料科科家在第一輪比賽時程式出了問題,沒有回答,結果就被刷掉了。每個參賽成員、主辦單位都大吃了一驚。頓時比賽變成了人人都有機會,一下子氣氛開始緊張起來。第一輪三次淘汰賽下,我們組別幸運地擠進前三名,準確度排第二。

第二輪比賽是採搶答方式,第一個回答正確才得分,累積10分為優勝者。這一輪比賽更刺激,因為大家的回答速度都很快,幾乎時間都只差一咪咪。不過我們沒有針對回答速度特別去調整,因此幾乎搶不到第一名回答,於是比賽過程不久就開始落後,成績都還掛0。當好不容易因前面組的失誤,才讓我們拿下一分時,全場都還鼓掌了起來,內心真的是頗感動的。後來劣勢一直都在,不過有幾次前面2組都答錯,只有我們答對,成了在比賽中的驕傲。

最後成績是我們排名第3名,雖然無法獲得更佳的名次有點可惜,不過已經超乎我們的預期。真是感謝組員的參與和付出。

附上報告組員的帥照。
Present

比賽時各組的投影片:
2016 PIXNET HACKATHON DEMO