先看看做演算法有哪些痛點(我們假設大部分演算法的**都是基於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技術...