2017 年 Google 開源了這些超讚的專案

程式設計師的那些事_發表於2018-02-23

(點選上方公眾號,可快速關注)


來源:開源中國編輯部

my.oschina.net/editorial-story/blog/1622423


我們知道在開源和貢獻開源方面,Google 一直是行業的典範。2017 年它開源了哪些優秀的軟體,有哪些值得我們借鑑學習呢?讓我們一起來看下:

 

1、硬體加速的機器學習 JavaScript 庫 DeepLearn.js


640?wx_fmt=gif&wxfrom=5&wx_lazy=1


DeepLearn.js 是 Google 推出的一個可用於機器智慧並加速 WebGL 的開源 JavaScript 庫,完全在瀏覽器中執行,不需要安裝,不需要後端處理。

 

2、大型微服務系統管理工具 Istio


Istio 是一個由谷歌、IBM 與 Lyft 共同開發的開源專案,旨在提供一種統一化的微服務連線、安全保障、管理與監控方式。Istio 專案能夠為微服務架構提供流量管理機制,同時亦為其它增值功能(包括安全性、監控、路由、連線管理與策略等)創造了基礎。這款軟體利用久經考驗的 Lyft Envoy 代理進行構建,可在無需對應用程式程式碼作出任何發動的前提下實現可視性與控制能力。Istio 專案是一款強大的工具,可幫助 CTO/CIO 們立足企業內部實施整體性安全、政策與合規性要求。

 

3、可自動生成命令列介面 Python Fire


Python Fire 是 Google 開源的一個可從任何 Python 程式碼自動生成命令列介面(CLI)的庫。


簡易示例:


import fire

 

class Calculator(object):

  """A simple calculator class."""

 

  def double(self, number):

    return 2 * number

 

if __name__ == '__main__':

  fire.Fire(Calculator)


然後,你可以執行:


python calculator.py double 10  # 20

python calculator.py double --number=15  # 30


4、谷歌深度學習庫 TensorFlow Fold


640?wx_fmt=gif


TensorFlow Fold 是用於建立使用結構化資料的 TensorFlow 模型庫,其中計算圖的結構取決於輸入資料的結構。


TensorFlow Fold 使得處理不同資料尺寸和結構的深度學習模型更容易實現。Fold 實現動態批處理,變換任意形狀的計算圖形的批次以產生靜態計算圖形。 該圖具有相同的結構,而不管其接收到什麼輸入,並且可以通過 TensorFlow 有效地執行。

 

5、Go 執行 Python:Grumpy


640?wx_fmt=png


Grumpy 是一個 Python to Go 原始碼翻譯編譯器和執行時,旨在替代 CPython 2.7。

關鍵的區別是它將 Python 原始碼編譯為 Go 原始碼,然後將其編譯為本機程式碼,而不是位元組碼。這意味著 Grumpy 沒有 VM。編譯的 Go 原始碼是對 Grumpy 執行時的一系列呼叫,Go 庫服務與 Python C API 類似的目的(儘管不直接支援 C API)。

 

6、基於 TensorFlow 的神經網路庫  Sonnet


640?wx_fmt=png


Sonnet 庫使用物件導向的方法,允許建立定義一些前向傳導計算的模組。模組用一些輸入 Tensor 呼叫,新增操作到圖裡並返回輸出 Tensor。其中一種設計選擇是通過在隨後呼叫相同的模組時自動重用變數來確保變數分享被透明化處理。

 

7、控制 headless Chrome 的 Node.js API :Puppeteer


640?wx_fmt=png


Puppeteer 是一個控制 headless Chrome 的 Node.js API 。它是一個 Node.js 庫,通過 DevTools 協議提供了一個高階的 API 來控制 headless Chrome。它還可以配置為使用完整的(非 headless)Chrome。

 

8、影像演算法工具 Guetzli


640?wx_fmt=png

640?wx_fmt=png


Guetzli,在瑞士德語中是“cookie(曲奇)”的意思,是一個針對數碼影像和網頁影像的 JPEG 編碼器,能夠通過產生更小的 JPEG 檔案來達到更快的線上體驗,並且同時保持與當前瀏覽器,影像處理應用和 JPEG 標準的相容性。Google 稱 Guetzli 建立高質量的 JPEG 影像檔案的大小比當前的壓縮方法要再小 35%。

 

9、Google 開源機器學習資料集視覺化工具 Facets


640?wx_fmt=png


Facets 是 Google 開源的一款視覺化工具,幫助理解、分析和除錯 ML 資料集。


Facets 包含兩個部分 —— Facets Overview 和 Facets Dive ,允許使用者以不同的粒度檢視其資料的整體影像。Facets Overview 可用於視覺化資料的每一個特徵,Facets Dive 用來探索個別的資料觀察集。

 

10、機器學習工具庫 Kubeflow


Kubeflow 是谷歌釋出的一個機器學習工具庫,Kubeflow 專案旨在使 Kubernetes 上的機器學習變的輕鬆、便捷、可擴充套件,其目標不是重建其他服務,而是提供一種簡便的方式找到最好的 OSS 解決方案。該庫包含包含的清單用於建立:


  • 用於建立和管理互動式 Jupyter notebook 的 JupyterHub

  • 可配置為使用 CPU 或 GPU,並通過單一設定調整至單個叢集大小的 TensorFlow 訓練控制器(Tensorflow Training Controller)

  • TF 服務容器(TF Serving container)

 

11、遊戲狀態自動管理框架 BOARDGAME.IO


BOARDGAME.IO 是 Google 開源的一個遊戲框架,旨在允許遊戲作者將遊戲規則從本質上轉化為一系列簡單的函式,這些函式用於描述當一個指定動作發生時遊戲的狀態變化,框架負責處理表述性狀態傳遞。 無需再手動編寫任何網路或後端程式碼。

 

12、開源量子軟體 OpenFermion


OpenFermion 是一個開源的軟體,用於編譯和分析量子演算法來模擬費米子系統,包括量子化學,在其他功能中,當前版本的特徵是用資料結構和工具獲取和操縱費米子和量子位哈密頓運算元的表示。



看完本文有收穫?請轉發分享給更多人

關注「程式設計師的那些事」,提升程式設計技能

640?wx_fmt=png

相關文章