小編的稿富奸了好久,生活困難,連寫文也難產。只好拿今天的活動做為墊檔,不,我是要認真介紹好物給大家!
Introduction
小編這次要來跟大家分享今天參加的 Pycon,一年一度的 Python 研討會,集結了許多 Python 相關的專案與知識,這次更不一樣的是,Kevin 我們 ccClub 的大家長也會代表大家秀出我們的戰力!
下面將簡述 talk 的一些心得~
Information of PyCon 2018
- 官方網站: https://tw.pycon.org/2018/zh-hant/
- HackMD 共筆:https://hackmd.io/c/pycontw2018/%2FYvr2So-oRCuGtaJagrBHLA
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