MLDB是每個數據科學家夢寐以求的數據庫
現實世界中的機器學習解決方案很少只是構建和測試模型的問題。 到目前為止,從訓練到優化,管理和自動化機器學習模型的生命周期是機器學習解決方案中最難解決的問題。 為了控制模型的生命周期,數據科學家需要能夠持久地并大規模地查詢其狀態。 除非您認為任何平均深度學習模型都可以包含數百個隱藏層和數百萬個互連節點,否則這個問題似乎微不足道。
存儲和訪問大型計算圖絕非易事。 在大多數情況下,數據科學團隊花費大量時間嘗試將商品化的NOSQL數據庫適應機器學習模型,然后得出一個不太明顯的結論:機器學習解決方案需要一種新型的數據庫。
MLDB是為機器學習時代而設計的數據庫。 該平臺經過優化,可以存儲,轉換和導航表示機器學習結構(例如深度神經網絡)的計算圖。 我知道您在想什么AWS云機器學習平臺(例如AWS SageMaker或Azure ML)已經包含用于機器學習圖的持久性模型,那么為什么我們需要另一個解決方案? 好吧,事實證明,可以從真實數據庫中受益的現實世界機器學習解決方案有很多需求:

輸入MLDB
MLDB提供了一個開放源代碼的本地數據庫,用于存儲和查詢機器學習模型。 該平臺首先在Datacratic中孵化,最近被AI強國Elementai收購,以驗證數據庫引擎在現代機器學習項目中的相關性。 MLDB有多種形式,例如可以部署在任何容器平臺上的云服務,VirtualBox VM或Docker實例。
MLDB的體系結構結合了不同的工件,這些工件抽象了機器學習解決方案生命周期的不同元素。 從技術上講,MLDB模型可以歸納為六個簡單的組件:文件,數據集,過程,函數,查詢和API。

檔案
文件表示MLDB體系結構中的通用抽象單元。 在MLDB模型中,文件可用于加載模型的數據,函數的參數或保留特定的數據集。 MLDB支持與流行的文件系統(例如HDFS和S3)進行本機集成。
數據集
MLDB數據集表示過程和機器學習模型使用的主要數據單元。 從結構上講,數據集是無模式,僅附加命名的數據點集,它們包含在單元格中,單元格位于行和列的交點處。 數據點由值和時間戳組成。 每個數據點因此可以表示為(行,列,時間戳,值)元組,而數據集可以視為稀疏的3維矩陣。 可以創建數據集,并可以通過MLDB的REST API將數據添加到數據集,也可以通過過程從文件中加載或保存到文件中。
程序
在MLDB中,過程用于實現機器學習模型的不同方面,例如培訓或數據轉換。 從技術的角度來看,過程被命名為可重用的程序,用于實現長時間運行的批處理操作而沒有返回值。 過程通常在數據集上運行,并且可以通過SQL表達式進行配置。 過程的輸出可以包括數據集和文件。
功能
MLDB函數抽象了過程中使用的數據計算例程。 函數被命名為可重用的程序,用于實現可以接受輸入值并返回輸出值的流計算。 通常,MLDB函數封裝表示特定計算的SQL表達式。
查詢
MLDB的主要優點之一是它使用SQL作為查詢存儲在數據庫中的數據的機制。 該平臺支持相當完整的基于SQL的語法,其中包括熟悉的構造,例如SELECT,WHERE,FROM,GROUP BY,ORDER BY等。 例如,在MLDB中,我們可以使用SQL查詢為圖像分類模型準備訓練數據集:
- mldb.query("SELECT * FROM images LIMIT 3000")
API和Pymldb
MLDB的所有功能都通過簡單的REST API公開。 該平臺還包括pymldb,這是一個Python庫,它以非常友好的語法抽象了API的功能。 以下代碼顯示了如何使用pymldb創建和查詢數據集。
- from pymldb import Connection
- mldb = Connection("http://localhost")
- mldb.put( "/v1/datasets/demo", {"type":"sparse.mutable"})
- mldb.post("/v1/datasets/demo/rows", {"rowName": "first", "columns":[["a",1,0],["b",2,0]]})
- mldb.post("/v1/datasets/demo/rows", {"rowName": "second", "columns":[["a",3,0],["b",4,0]]})
- mldb.post("/v1/datasets/demo/commit")
- df = mldb.query("select * from demo")
- print type(df)
支持機器學習算法
MLDB支持大量的算法,例如可以從"過程和函數"中使用的算法。 該平臺還本地支持TensorFlow等不同深度學習引擎的計算圖。

匯集全部
讓我們以機器學習解決方案中的通用工作流程為例,例如模型的訓練和評分。 下圖說明了如何在MLDB中實現它:

- 該過程從充滿訓練數據的文件開始,該文件已加載到訓練數據集中。
- 運行培訓程序以生成模型文件
- 模型文件用于參數化評分功能
- 可通過REST端點立即訪問此評分功能,以進行實時評分
- 還可以通過SQL查詢立即訪問評分功能
- 批處理計分過程使用SQL將計分功能應用于未計分的數據集,從而產生計分的數據集
結論
MLDB是為實現機器學習解決方案而重新設計的第一個數據庫實例。 該平臺仍然可以進行很多改進,以支持現代機器和深度學習技術,但是它的靈活性和可擴展性使其成為了這個新領域的一次重大迭代。