自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用DC/OS為企業(yè)數據科學加速!

譯文
大數據
這篇逐步介紹的教程介紹了使用Tensorflow將DC/OS Data Science Engine設置成PaaS,用于支持分布式多節(jié)點多GPU模型訓練。

【51CTO.com快譯】作為一名專注于構建和交付新產品的全棧機器學習顧問,我常發(fā)現自己處于數據科學、數據工程和開發(fā)運維的交匯點。因此,我一直非常關注數據科學平臺即服務(PaaS)的興起。我最近著手評估不同的平臺即服務(PaaS)及其使數據科學操作實現自動化的潛力。我在探究它們的功能,然后使用一個或多個PaaS使代碼的設置和執(zhí)行實現自動化。

為什么是DC/OS Data Science Engine?

在任何一個給定的云環(huán)境,比如亞馬遜網絡服務(AWS)、谷歌云平臺(GCP)和微軟Azure,設置Jupyter筆記本(notebook)變得很容易,以便數據科學家個人能夠工作。對于初創(chuàng)公司和小型數據科學團隊來說,這是一個很好的解決方案。什么都不需要維護,筆記本可以保存在Github中以實現持久性和共享。

對于大型企業(yè)來說,事情可沒有這么簡單。在這種規(guī)模下,由于環(huán)境和建模變得不可重現,跨多云的短暫資產上的臨時環(huán)境會帶來混亂而不是有序。企業(yè)跨多云和在本地運作,有特定的訪問控制和驗證要求,需要能夠訪問內部資源,用于數據、源控制、數據流及其他服務。

對于這些組織而言,DC/OS Data Science Engine提供了統(tǒng)一的系統(tǒng),該系統(tǒng)提供Python機器學習堆棧、Spark、Tensorflow及其他深度學習框架,包括TensorFlowOnSpark,以實現分布式多節(jié)點多GPU模型訓練。這是非常引人注目的方案,設置后直接可以使用,為大型的數據科學團隊和公司大大消除了沮喪和復雜性。

AWS上的Data Science Engine

DC/OS Universal Installer是一個terraform模塊,可輕松啟動DC/OS集群,帶有用于訓練神經網絡的GPU實例。這里有個地方要注意:你擁有足夠多的通過亞馬遜的服務限制授權的GPU實例。AWS Service Limits定義了你可以在任何給定區(qū)域使用多少AWS資源。默認分配的GPU實例為零,可能需要一兩天才能授權更多實例。如果你需要加快速度,可以進入到AWS支持中心,請求與專員聯系。他們通常可以大大加快進程。

想使用Terraform引導集群,我們只需要在paas_blog/dcos/terraform/desired_cluster_profile.tfvars中編輯下列變量: 

  1. cluster_owner = "rjurney" 
  2. dcos_superuser_password_hash = "${file("dcos_superuser_password_hash")}" 
  3. dcos_superuser_username = "rjurney" 
  4. dcos_license_key_contents = "" 
  5. dcos_license_key_file = "./license.txt" 
  6. dcos_version = "1.13.4" 
  7. dcos_variant = "open" 
  8. bootstrap_instance_type = "m5.xlarge" 
  9. gpu_agent_instance_type = "p3.2xlarge" 
  10. num_gpu_agents = "5" 
  11. ssh_public_key_file = "./my_key.pub" 

并運行下列命令: 

  1. bash  
  2. terraform init -upgrade  
  3. terraform plan -var-file desired_cluster_profile.tfvars -out plan.out  
  4. terraform apply "plan.out" 

apply命令的輸出將包括一個或多個主節(jié)點的IP,這只對你的IP開放。打開master url會顯示登錄屏幕,你可以使用Google、Github、微軟或預先配置的密碼來驗證身份。

一旦你完成這步,想拆除集群,請運行: 

  1. bash  
  2. terraform destroy --auto-approve --var-file desired_cluster_profile.tfvars 

可以從DC/OS Web控制臺找到Data Science Engine以及Catalog菜單上的其他諸多服務,比如Kafka、Spark和Cassandra。我們只需要選擇“data-science-engine”軟件包,配置提供服務的資源:CPU、RAM和GPU。如果需要,還有許多其他選項,但它們不是必需的。

一旦我們點擊了Review & Run并確認,將進入到服務頁面。幾秒鐘內完成部署后,我們只需點擊服務名稱上的箭頭,便進入到JupyterLab實例。

JupyterLab的Github模塊很出色,已預先安裝,可以輕松加載我為了測試系統(tǒng)而創(chuàng)建的教程筆記本。點擊Github圖標,輸入rjurney,其中顯示可調出我的公共存儲庫列表。選擇paas_blog,然后雙擊DCOS_Data_Science_Engine.ipynb Jupyter筆記本即可打開它。它使用S3上的數據,因此不必下載任何數據。

本教程基于一個名為Kim-CNN的卷積神經網絡文檔分類器模型,為786個最頻繁的標簽創(chuàng)建了一個Stack Overflow標記器(tagger)。筆記本是深度網絡和自然語言處理(NLP)所常見的。我們先驗證GPU支持在Tensorflow中適用,我們還遵循為所有模型參數定義變量的最佳做法,以方便搜索超參數。然后,在執(zhí)行測試/訓練拆分之前,我們對標簽進行標記化、填充并轉換成矩陣,以便一旦訓練完畢,我們就能獨立驗證模型的性能。 

  1. python 
  2. tokenizer = Tokenizer( 
  3. num_words=TOKEN_COUNT, 
  4. oov_token='__PAD__' 
  5. tokenizer.fit_on_texts(documents) 
  6.  
  7. sequences = tokenizer.texts_to_sequences(documents) 
  8.  
  9. padded_sequences = pad_sequences( 
  10. sequences, 
  11. maxlen=MAX_LEN, 
  12. dtype='int32'
  13. padding='post'
  14. truncating='post'
  15. value=1 

Kim-CN使用不同長度的一維卷積和max-over-time pooling方法,連接結果,這些結果進入到較低維度的密集層,然后最終的sigmoid函數激活與標簽對應的密集層。模型的核心已在下面實現,作了幾處改動。 來源:Yoon Kim所著的《用于句子分類的卷積神經網絡》 

  1. python 
  2. Create convlutions of different sizes 
  3. convs = [] 
  4. for filter_size in FILTER_SIZE: 
  5. f_conv = Conv1D( 
  6. filters=FILTER_COUNT, 
  7. kernel_size=filter_size, 
  8. padding=CONV_PADDING, 
  9. activation=ACTIVATION 
  10. )(drp) 
  11. f_shape = Reshape((MAX_LEN * EMBED_SIZE, 1))(f_conv) 
  12. f_pool = MaxPool1D(filter_size)(f_conv) 
  13. convs.append(f_pool) 
  14.  
  15. l_merge = concatenate(convs, axis=1) 
  16.  
  17. l_conv = Conv1D( 
  18. 128, 
  19. 5, 
  20. activation=ACTIVATION 
  21. )(l_merge) 
  22. l_pool = GlobalMaxPool1D()(l_conv) 
  23.  
  24. l_flat = Flatten()(l_pool) 
  25. l_drp = Dropout(CONV_DROPOUT_RATIO)(l_flat) 
  26.  
  27. l_dense = Dense( 
  28. 60, 
  29. activation=ACTIVATION 
  30. )(l_drp) 
  31.  
  32. out_dense = Dense( 
  33. y_train.shape[1], 
  34. activation='sigmoid' 
  35. )(l_dense) 

雖然數據經過上采樣(upsampled)以平衡類,仍存在足夠的不平衡,我們需要計算類權重,幫助模型學會預測常見標簽和不常見標簽。若沒有類權重,損失函數(loss function)對常見標簽和不常見標簽同等處理,導致模型不可能預測不常見標簽。

Python 

  1. train_weight_vec = list(np.max(np.sum(y_train, axis=0)) / np.sum(y_train, axis=0))  
  2. train_class_weights = {i: train_weight_vec[i] for i in range(y_train.shape[1])} 

我們關注的主要度量標準是類別準確性,因為即使786個標簽中有一個預測不正確,二進制準確性也無法通過預測。

為了便于進行可重復的實驗,我們將最終的度量標準名稱調整為可重復的(即val_precision_66變?yōu)関al_precision,然后將我們跟蹤的度量標準附加到pandas DataFrame日志末尾,我們既可以直觀顯示當前和先前運行的結果,還可以直觀顯示作出變更后兩次運行之間的性能變化。

我們還想知道每次epoch的性能,那樣我們不用訓練數量過多的epoch。我們使用matplotlib繪制幾個度量標準以及每次epoch的測試/訓練損失。

最后,光了解理論性能還不夠。我們需要在不同的置信度閾值下查看標記器的實際輸出。我們?yōu)镾tack Overflow問題、它們的實際標簽以及我們預測的標準創(chuàng)建了一個DataFrame,以便我們直接演示模型及其實際性能。

該平臺完美地運行本教程,我是指雖然它是新的,但已經適合實際的數據科學工作負載。

使DC/OSData Science Engine的設置實現自動化

這包括你如何手動使用平臺,但本文關注的是PaaS自動化。那么我們如何加快速度呢?

DC/OS的圖形用戶界面和CLI共同使所有類型的用戶都可以通過Data Science Engine輕松訪問JupyterLab:非技術管理人員想在筆記本中查看報告,開發(fā)運維人員/數據工程師希望使流程實現自動化。如果手動GUI流程似乎很復雜,一旦我們擁有作為JSON文件的服務配置,僅用幾行代碼就可以使它實現自動化,為此通過Terraform命令啟動DC/OS集群,從Terraform獲得集群地址,然后使用DC/OS CLI對集群進行身份驗證并運行服務。

DC/OS GUI提供了粘貼到外殼中的命令,以安裝和配置CLI,我們使用CLI使集群和服務的設置實現自動化。

你可以使用GUI通過導出服務配置使設置實現自動化。

服務配置本身非常簡單: 

  1. json 
  2. "service": { 
  3. "name""data-science-engine"
  4. "cpus": 8, 
  5. "mem": 51200, 
  6. "gpu": { 
  7. "enabled"true
  8. "gpus": 1 

然后你只用一個命令即可安裝服務: 

  1. bash  
  2. dcos package install data-science-engine --options=data-science-engine-options.json 

如果光使用CLI實現全面的自動化,你可以創(chuàng)建集群,并啟動Data Science Engine,僅用6個命令即可: 

  1. bash 
  2. # Boot DC/OS Cluster 
  3. terraform init -upgrade 
  4. terraform plan -var-file desired_cluster_profile.tfvars -out plan.out 
  5. terraform apply plan.out 
  6.  
  7. # Get the cluster address from Terraform's JSON output 
  8. export CLUSTER_ADDRESS = `terraform output -json | jq -r '.["masters-ips"].value[0]'
  9.  
  10. # Authenticate CLI to Cluster using its address and Install the Data Science Engine Package 
  11. dcos cluster setup http://$CLUSTER_ADDRESS # add whatever arguments you need for automated authentication 
  12. dcos package install data-science-engine --options=data-science-engine-options.json 

這六個命令用于設置DC/OS集群,眾多可用服務只需點擊一下即可獲得,包括可以運行Spark任務,并執(zhí)行分布式Tensorflo訓練的JupyterLab實例。這不賴!

結束語

總之,DC/OS Data Science Engine給我留下了深刻的印象。手動設置很容易,環(huán)境適合實際使用,結果證明自動化很容易。如果你想了解更多信息,請在此處查看全文,相應代碼詳見此處:github.com/rjurney/paas_blog

原文標題:Using DC/OS to Accelerate Data Science in the Enterprise,作者:Russell Jurney

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

 

責任編輯:未麗燕 來源: 51CTO.com
點贊
收藏

51CTO技術棧公眾號