MLSQL解決了什麼問題

2021-08-21 10:42:37 字數 3045 閱讀 8066

先看看做演算法有哪些痛點(我們假設大部分演算法的**都是基於python的):

專案難以重現,可閱讀性和環境要求導致能把另外乙個同事寫的python專案執行起來不得不靠運氣

和大資料平台銜接並不容易,需要讓研發重新做工程實現,導致落地週期變長。

訓練時資料預處理/特徵化無法在**時復用

整合到流式,批處理和提供api服務都不是一件容易的事情

**/演算法復用級別有限,依賴於演算法自身的經驗以及自身的工具箱,團隊難以共享。

其他團隊很難接入演算法的工作

mlsql如何解決這些問題呢?

mlsql提供了一套sql的超集的dsl語法mlsql,資料處理,模型訓練,模型**部署等都是以mlsql語言互動,該語言簡單易懂,無論演算法,分析師,甚至運營都能看懂,極大的減少了團隊的溝通成本,同時也使得更多的人可以做演算法方面的工作。

所有較為複雜的資料預處理和演算法都是模組化的,通過函式以及純sql來進行銜接。比如:

-- load data

load parquet.`$` as orginal_text_corpus;

-- select only columns we care

select feature,label from orginal_text_corpus as orginal_text_corpus;

-- feature enginere moduel

train zhuml_orginal_text_corpus as tfidfinplace.`$`

where inputcol="content"

and `dic.paths`="/data/dict_word.txt"

and stopwordpath="/data/stop_words"

and ngrams="2";

-- load data

load parquet.`$/data` as tfidfdata;

-- algorithm module

train zhuml_corpus_featurize_training as pythonalg.`$`

where pythonscriptpath="$"

-- kafka params for log

and `kafkaparam.bootstrap.servers`="$"

and `kafkaparam.topic`="test"

and `kafkaparam.group_id`="g_test-2"

and `kafkaparam.username`="pi-algo"

-- distribute data

and enabledatalocal="true"

and datalocalformat="json"

-- sklearn params

and `fitparam.0.modulename`="sklearn.svm"

and `fitparam.0.classname`="svc"

and `fitparam.0.featurecol`="features"

and `fitparam.0.labelcol`="label"

and `fitparam.0.class_weight`="balanced"

and `fitparam.0.verbose`="true"

and `fitparam.1.modulename`="sklearn.*****_bayes"

and `fitparam.1.classname`="gaussiannb"

and `fitparam.1.featurecol`="features"

and `fitparam.1.labelcol`="label"

and `fitparam.1.class_weight`="balanced"

and `fitparam.1.labelsize`="2"

-- python env

and `systemparam.pythonpath`="python"

and `systemparam.pythonparam`="-u"

and `systemparam.pythonver`="2.7";

這段小指令碼指令碼完成了資料載入,特徵工程,最後的訓練。所有以train開頭的,都是模組,以select 開頭的都是標準sql,

以load開頭的則是各種資料來源的載入。

在mlsql中,任何乙個模組都有兩個產出:模型和函式。訓練時該模組會產生乙個對應的模型,**時該模型會提供乙個函式,從而實現

所有資料處理模組,演算法模組,都有標準的暴露引數的方式,也就是前面例子類似下面的句子:

and `fitparam.0.labelcol`="label"

and `fitparam.0.class_weight`="balanced"

and `fitparam.0.verbose`="true"

比如該演算法暴露了class_weight,labelcol,verbose等引數。所有人開發的演算法模組和資料處理模組都可以很好的進行復用。

mlsql是基於spark改造而成,這就直接繼承了spark的多個優點:

同行啟動乙個local模式的mlsql server,然後註冊我們訓練的時候使用到的資料處理模組和演算法模組,每個模組都會產生乙個函式,接著就能通過http介面傳遞乙個函式巢狀的方式完成乙個pipeline的使用了。對於函式我們確保其響應速度,一般都是在毫秒級。

註冊就是乙個簡單的register語句:

-- transform model into udf

register pythonalg.`$` as topic_spam_predict options

pythonscriptpath="$"

;

只要實現mlsql的標準規範,你就能夠輕而易舉的將各種框架整合到mlsql中。目前已經支援sklearn,同時有keras處理等相關例子。演算法可以專注於演算法模組的研發,研發可以專注於資料處理模組的開發,所有的人都可以通過mlsql復用這些模組,完成演算法業務的開發。

EDI 幫助企業解決了什麼問題?

經常會有客戶問我,什麼是edi,edi幹嗎用的?能幫助企業解決什麼問題?簡單地說,edi幫助企業解決了兩個問題 如何傳輸資料 傳輸什麼資料 對於 如何傳輸資料 這個問題。現在網際網路極大發展,從而已經代替了過去的私有網路 比如以前的 x.25 isdn 但是發展不光帶來了新鮮空氣,蒼蠅蚊子 也一起來...

React的虛擬Dom解決了什麼問題

傳統網頁在進行更新的時候會有乙個很棘手的問題,那就是需要用繁雜的domapi去操作 dom,很容易出現bug且難以維護,對於如何從這種繁雜的dom操作中脫離出來,react提出了乙個新的思想,始終整體重新整理頁面,當資料發生變化時,react會自動更新ui,從而讓我們只關心資料以及最後ui是什麼樣子...

Raid解決什麼問題

raid技術能夠為計算機系統提供以下三個方面的優異效能 1 提供更大的儲存空間 目前容量為2tb的硬碟已經在市場上銷售,2tb的儲存空間對於個人使用者來說已經很大了,但對於企業使用者來說,還遠遠不夠,那麼使用raid技術,就可以把多塊硬碟組成乙個更大的儲存空間供使用者使用。比如,利用raid 0技術...