Pycon 2018 Day1

Kiwi lee
ccClub
Published in
6 min readJun 1, 2018
大家聽完都變 Kevin 的腦粉啊

小編的稿富奸了好久,生活困難,連寫文也難產。只好拿今天的活動做為墊檔,不,我是要認真介紹好物給大家!

Introduction

小編這次要來跟大家分享今天參加的 Pycon,一年一度的 Python 研討會,集結了許多 Python 相關的專案與知識,這次更不一樣的是,Kevin 我們 ccClub 的大家長也會代表大家秀出我們的戰力!

下面將簡述 talk 的一些心得~

Information of PyCon 2018

Kevin — 輿論分析量測電視劇觀看喜好的風向

大神的 talk ,跪著打完這篇。

主要講述如何從標題得知討論的戲劇為何。不採用 String Match 與 Machine Learning 的方法,就不會受限在未知事件的錯誤分類,也不先斷詞,來避免可能的 Out of Voc 問題,那究竟大神如何下手呢?

為此而採取的方法是使用 Google search 的多數決,結合數個台日中韓戲劇的資料庫,決定出標題的戲劇名稱。透過此方法可獲得 76% 的準確率,若再加入 String Match 與 Candidate list 的話,可進步到快9成。

結合文章的推噓留言數,即可產生報表給 Marketing。未來更會加入內文的語義分析,得知戲劇被廣為討論的主因為何。

Talk

人工智慧民主化在台灣

關於 Deep Learning

以整體來講,AI 屬於最外層的 Knowledge Base,接下來是 Machine Learning ,再下來是 Representation Learning,偏向高維度問題,最裡面則是 AI 的 killer app,Deep Learning。

而因目前非結構化的資料越來越多(具有高維度的特徵值),例如音訊、圖片、文字等等,使用 Machine Learning 很容易很受限制在特徵值的抽取,但使用 Deep Learning 就比較不會受限制。 要如何選取可做機器學習的問題,也是一大學問,大家有興趣可以閱讀投影片。

但若以目前問題的方向 Supervised Learning 只是基本的,接下來的 Reinforcement learning, Semi-supervised learning 及 Generative model 才是大家要跟上的策略導向。

Reinforcement Learning: https://www.youtube.com/watch?v=SHLuf2ZBQSw
Generative model: https://make.girls.moe/#/ (Conditional GAN)
Semi-supervised Learning: 目前常用在擴增未標籤的資料

台灣 AI 的簡述

以目前的產業對應 AI 這個浪潮來說,有幾個問題:

  • 人才的缺乏:不是只會CNN, RNN,而是懂得如何將這個技術與 Domain Knowledge 結合的人
  • 問題的定義:很簡單,不知道 Deep Learning 能做什麼,就很容易受限在之前的經驗裡面。

常見的工業@AI

  • 瑕疵檢查
  • 自動流程控制
  • 預測性維護
  • 原料組合最佳化

講者說:

  • 今天的AI如同1994年的WWW
  • 今天學ML如同1994年學CGI/HTML
  • 所有人都相信AI現在才剛起步

Using Tensorflow on stellar classification

利用三層的 Dense NN 來分類星等,透過數個 binary classifier 來分類,最後卻因訓練資料有問題,而卡住。

from ai.backend import python

介紹了 Umbo 的 server 架構,如何把 model 與 web server 有效率的串連起來,在部署網頁的同時,也能監控 model 的訓練與上線。

Backend (佔了 87 %)

伺服器要先穩定,再來記錄所有資訊,依優先權或規則來分類,第三則是如何導入 model 並有效的使用系統效能,最後則是維護修改。

以目前的情況,GPU 的效能影響最大。因 AWS, Google Cloud Platform 租借 GPU 過貴,所以主要是使用自家的機房。

至於效能的部分,使用 pyflame 抓程式時間,tracemalloc 抓 memory usage,Valgrind 來檢查專案中的 C 語言效能。

Machine Learning (佔了 13 %)

Model 很難直接運用在 server,因此如何有效率的嵌入即是這邊的重點。這邊主要是用 Airflow 協助。

接下來提到如何建立正確的模型改善方案,這邊導入的是 Uber 提供的概念 https://eng.uber.com/michelangelo/ 。如下圖的投影片右方的內容

Java-Jersey 到 Python-Flask 服務不中斷重構之旅

因公司員工離職,講者本身只會 Python,因此只好將原本的 Java 轉成 Python。

使用 Flask 可加速開發 API 的時間,相較於 Django 的笨重。最後透過 Flagger 來編寫 API 的文件檔。

新舊 API 的更版

因擔心一時全導入會出錯,採取了金絲雀部署,即當新功能或舊功能的刪減,才會將其轉 Python 程式碼,一點一滴的修正,並利用 Nginx 的導流,只將部分的 request 給 python Flask 做測試。

Adopting Python Asyncio in Large Scale Project (Instagram)

因 Instagram 大量用戶與影片貼文的上升,故想要加速 API 的速度,發現主要的瓶頸在 I/O 的處理上,而欲將原先的程式改成同步化進行,而使用了 Asyncio 這個套件。

當導入這個套件後,遇到了許多問題,講者皆有明確列出解法,但因小編本身沒用過這個套件,所以感觸沒那麼深,無法描繪更多。

Summary

這次的 PyCon 講到蠻多 Flask 的微服務,小編本身也常在用,會被它可迅速開發而震驚,早寫完早下班啊!連同與其相關的套件,也提到蠻多的,Celery 做為 web task 的 handler,Swagger 可做為 API 的文件公版,asyncio因同步化的加速,還有 deep learning 訓練完的模型要如何嵌入,我覺得是我第一天聆聽下來的重點。

請大家期待 Day2 的介紹吧~ 應該會有人想看吧QQ

--

--