2019 年 10 大頂級 Python 支援庫

  • 2019 年 12 月 26 日
  • 筆記

呆鳥云:「本文已由 Tryolabs 書面授權翻譯,大家可以安心閱讀,再也不用擔心版權問題啦。對於想轉載的朋友,呆鳥也特意申請了轉載授權,轉載時附上 Tryolabs 的 LOGO 與原文鏈接即可,當然,呆鳥的資訊也要保留一下下。另外,這篇文章介紹的東西真是不錯,呆鳥尤其喜歡 Pyodide,越翻譯越想私藏,但既然已經答應了 Tryolabs 的外國友人,只好心中默念三遍『獨樂樂不如眾樂樂,我是分享的小行家』。」

原文作者:Fabián Torres

原文鏈接: https://tryolabs.com/blog/2019/12/10/top-10-python-libraries-of-2019/

以下為譯文。


歡迎回來,這是我們第五次推出年度頂級 Python 支援庫榜單。在這裡,我們列出了隱匿於開源世界裡的瑰寶,既可以幫你啟動新的項目,也可以為你現有的項目添光加彩。本榜單覆蓋了各個領域,包括機器學習與非機器學習的支援庫。

希望你能和我們一樣喜歡本年度的頂級支援庫榜單,話不多說,題歸正文!

1. HTTPX

項目網址: https://www.encode.io/httpx/

經常進行 API 交互的 Python 忠粉,對 requests 應該是運用自如了。不過,對於日趨普及的現代高性能應用而言,在用到非同步範式時,requests 就顯得有點捉襟見肘了。

為了解決這一問題,大咖 Tom Christie 和他的小夥伴給大家帶來了新世代非同步 HTTP 客戶端 ~ HTTPX。

緊跟 requests 步伐,HTTPX 在支援 requests 標準功能的同時,還支援 HTTP/2 與 HTTP/1,以及通過 ASGI 協議直接調用 Python 網路應用,此外還有完善的類型注釋。

要執行大規模並發請求?HTTPX 就是你要找的答案。

注意:HTTPX 仍在 alpha 版開發階段,目前只開發了非同步客戶端,將來還會引入同步客戶端。

2. Starlette

項目網址: https://www.starlette.io/

Starlette 打包了 WebSocket、GraphQL、進程內後台任務等多種功能,是真正高性能的輕量級 ASGI 框架與工具箱。所有功能都完全支援類型注釋程式碼庫,且不需要任何硬性依賴項。可以把它當成非常輕量級的現代非同步版 Flask。

Starlette 的靈活性很強,既可以用作完整的網路框架,也可以只用作 ASGI 工具箱。

Starlette 運行在 uvicorn 之上,這個支援庫入選了去年的 10 大頂級 Python 支援庫榜單。

如果想開發新型網路應用,強烈建議您給 Starlette 一個發光發熱的機會。

3. FastAPI

項目網址: https://github.com/tiangolo/fastapi

Starlette 很贊,但它太迷你了,雖然給了開發者很大的自由,但有時,用戶要的其實只是一個能快速完成任務的框架。

Sebastián Ramírez 就是出於這個目的開發的 FastAPI,怎麼說呢?這個支援庫的各個方面都很 Fast。

這個用 Python 開發 API 的新框架具有超高性能,而且可以基於 OpenAPI 標準自動生成互動式文檔。默認支援 Swagger UI 與 ReDoc,允許直接從瀏覽器調用、測試 API,從而提高開發效率。用這個框架開發 API,真的是又快又簡單。

該支援庫還支援現代 Python 最佳實用功能之一:類型提示。FastAPI 在很多方面都使用了類型提示,其中最酷的一個功能是由 Pydantic 加持的自動數據驗證與轉換。

FastAPI 基於 Starlette 開發,性能與 NodeJS 和 GO 相當,還自帶 WebSocket 與 GraphQL 原生支援。

最後,對於開源支援庫而言,它的技術支援文檔也非常不錯。說真的,去看一下吧!

4. Immutables

項目網址: https://github.com/magicstack/immutables

MagicStack 的兄弟回歸了,這次他們帶來的是一個簡單、優雅的不可變映射類型(「凍結字典」)。

這東西的好處在哪兒?呃,希望你能聽得懂下面這句話,Haskell 等函數程式語言里使用的哈希數組映射字典樹(HAMT)的底層數據結構。最值得注意的是,不管 set() 還是 get() 操作的性能都為 O(log N),且對於相對較小的映射,可以達到 O(1)。

如果你的應用里字典的規模較大,並且想提高一下性能,這個酷酷的新支援庫值得一試。

5. Pyodide

項目網址: https://github.com/iodide-project/pyodide/

Pyodide 是本榜單里最刷三觀的項目。通過 WebAssembly,它把 Python 科學引入到了瀏覽器介面,把科學計算提升到了全新的層面。

想用 Numpy 搞定一些數字?用 Pandas 處理大型 DataFrame?用 Matplotlib 為計算結果進行可視化?有了 Pyodide,這些操作在瀏覽器里就可以輕輕鬆鬆地實現了。

這還不算完,還有好消息:這個庫可用的 Python 支援庫已經超過了 35 個,您這是要上天啊。

6. Modin

項目網址: https://github.com/modin-project/modin

Modin 的口號是「只改一行程式碼,就能加速 Pandas」,沒錯,就是這麼簡單。只要安裝 Modin,更改 import 語句,在多核筆記型電腦上,處理數據的速度就能提高 4 倍。

我滴個神 ~~ 這是怎麼做到的?Modin 有自帶的 modin.pandas.DataFrame 對象,這是一個輕量級的並行 DataFrame 對象。因為與 Pandas API 兼容,使用這個對象就跟是透明的一樣,在後台,該支援庫使用 Ray 或 Dask 作為計算引擎,執行分散式數據計算。

有的時候,獲得更快的速度就是那麼簡單,改一兩行程式碼就可以了,Modin 就是證明。

7. Streamlit

項目網址: https://github.com/streamlit/streamlit

不論機器學習項目多麼的超凡脫俗,都免不了要手動與模型和數據交互的工作。

與其投入無數小時,開發數千行程式碼的應用,Streamlit 讓你可以快速搭建用來分享模型與分析的 APP。構建互動式 UI、實現數據可視化、輸出分析模型現在就是小菜一碟。

有了 Streamlit,只要添加幾行程式碼,嗖的一下,就能從 Python 腳本程式碼飛升為產品級 APP。TensorFlow、Keras、PyTorch、Pandas,只要是你能想到的數據科學工具,Streamlit 都已經支援了。

8. Transformers

項目網址: https://github.com/huggingface/transformers

從事機器學習相關工作的讀者,一定會對過去的一年中自然語言處理(NLP)領域裡的重大突破有所耳聞。

BERT、XLNet、roBERTa 等新湧現出來的高性能模型已經取得了長足的發展,尤其是在文本分類、機器翻譯、命名實體識別等眾多 NLP 領域裡的高精尖突破層出不窮,讓人眼花繚亂。

對業界人士來說,找到一款既能在產品級程式上利用這些模型,又不會太過複雜的工具,尤為重要。對研究者而言,一個既不用花費太多時間編寫模板程式碼,又能調校支援庫內核,不斷開發、實驗新模型的支援庫,也非常重要。

Hugging Face 的小夥伴給我們帶來了變形金剛(Transformers),這個支援庫支援最現代的 NLP 模型打包、預訓練等功能,而且還開箱即用。TensorFlow 2.0 與 PyTorch 之間的互操作,讓該支援庫達到了業界標準,完全可以為研究工作與產品級應用程式加持。該支援庫由研究人員開發,因此,它的更新速度非常快,而且還在不斷引入新式模型。

錦上添花:Hugging Face 團隊開發了 DistilBERT,這是基於 BERT 提煉出來的,更小、更快、更省錢、更輕量的版本。

還在猶豫要不要用 Hugging Face 的變形金剛處理現代 NLP 任務?看到這篇文章就是緣分,快來試下這個在線演示,感受變形金剛的魔力吧。

9. Detectron2

項目網址: https://github.com/facebookresearch/detectron2

Facebook AI 研究團隊(FAIR)在開發對象探知、姿態估測、語義/實例分隔、全景分割等模型的同時,不斷將電腦視覺(CV)推向新的高度。

就在短短的幾年前,上述這些技術就像是科幻小說。我們從未對 FAIR 有過什麼期望,但這回他們再一次震撼全場。

Detectron2 是 Detectron 的延續,該支援庫建立在 PyTorch 之上,整合了多種高精尖的電腦視覺演算法。

鑒於支援用例類型多種多樣,這類支援庫的開發難度特別大。與 Hugging Face 的 Transformers 類似,FAIR 團隊的 Detectron2 真的很強大,其延展性與模組化的設計風格,讓它在電腦視覺研究應用中獨領風騷。同時,Detectron2 的應用極其簡單,非常適合那些只想快速得到結果,不想了解核心演算法的人。沒錯,只要幾行 Python 程式碼,就可以通過 Detectron2 讓你開發的軟體「理解」圖片。

Detectron2 能否形成生機勃勃的社區,還需要些時間來驗證,但到目前為止,它的前途還是蠻光明的。很多研究人員都在為 Detectron2 研發更新、更快、更好的模型,因此,它成為電腦視覺應用「首選」解決方案的可能性很大。如果你從事電腦視覺工作,一定要對這個支援庫保持密切的關注!

10. Metaflow

項目網址: https://docs.metaflow.org/introduction/what-is-metaflow

Metaflow 這個支援庫實在太新了,差點就沒趕上 2019 年榜單評選!但不要因此就小瞧它:別看它 12 月 3 日才正式發布,其實它是 Netfilx 兩年精雕細琢的成果,通過了長期內部實測,Netflix 才決定開源。

Metaflow 這個 Python 支援庫能幫助數據科學家與數據工程師開發在現實世界中應用的實戰項目。它的目標是,減輕非技術型數據科學家學習技術的負擔,比如,如何利用計算資源、怎麼實現並行運算、架構設計、版本控制等。Netflix 與 AWS 合作,讓用戶通過開箱即用的分散式計算即可輕鬆定義複雜數據流。

我們在 Tryolabs 內部已經評測了幾個 Metaflow 核心項目。如果你也對這個工具感興趣,請參閱 Netflix 部落格的發布貼。

結論

這一年,或者說又一個10 年馬上就要過去了,開源社區這些年的對世界的貢獻將對今後幾年產生深遠的影響。想要了解這些年的優秀開源庫,就來看下我們這幾年的榜單吧:2015、2016、2017、2018。

本文由 Elías Masquil, Alan Descoins 與 Germán Hoffman 合作編撰。

如需查看完整鏈接版,請點擊原文鏈接。

Tags: