背景介紹
PyTorch是由Facebook人工智慧研究院於 2017 年 1 月在github上開源的深度學習框架,一經開源就迅速吸引了人們的眼球。其歷史可以追溯至 2002 年使用Lua語言的Torch框架,並由其幕後團隊一手打造。PyTorch作為Torch框架的繼任者,並不僅僅只是移植代碼並提供接口,而是深入支持了Python,對大量模塊進行了重構,並新增了最先進的變量自動求導系統,成為時下最流行的動態圖框架。
在入門時,PyTorch提供了完整的文檔,並有著活躍的社區論壇,對於新手而言上手遇到的難關容易解決。更深入一些,在特性設計上,PyTorch對於抽象出的概念較少,易於理解,同時提供的API的設計理念與Torch一脈相承,符合人的一般思維,接口優雅。而框架最核心的性能方面,PyTorch的速度表現在許多評測中勝過TensorFlow和Keras等知名框架。
本文將以一個使用了pytorch的demo代碼pytorch-classify為例,通過華為雲上的容器服務一鍵式部署, 5 分鐘完成免費的雲上pytorch代碼的部署。
傳統部署方式
首先是準備環境。先有個伺服器,這臺伺服器需要能夠被外部訪問。而後在作業系統裡使用yum安裝需要的python(3.6.5)、pip、git,再通過pip等方式獲取到代碼需要的依賴(pytorch 0.4.1),準備好軟體依賴後檢查pytorch-classify代碼所需的各項環境配置是否滿足要求。而後通過git拉取版本代碼放入環境內,通過腳本運行起來。
在簡單環境下,這種部署方式是沒有任何問題的。但是由於真實環境複雜,事情並沒有那麼簡單,上面的每一步都可能會有問題,並且有些問題很難處理。比如說安裝軟體的時候,環境上已有2.7. 11 的python版本,並且已經為另外一個項目所使用,那麼此時的你並不一定有能力與魄力選擇將python版本升級並還能保證一切都是ok的。
本方法在複雜環境下部署時間上限與影響範圍極難估計,只適合簡單應用的部署。
華為雲上容器部署方式
容器依託作業系統提供的沙箱機制,能夠將應用及其運行環境直接打包為鏡像,一次打包多次運行。同時,依託於Kubernetes(k8s)等容器編排引擎,容器支持自動化部署以及大規模可伸縮的應用容器化管理,這些特性大大方便了應用的部署。K8s使應用系統變成了一系列應用相關的配置,簡單同時不易出錯,在部署大型應用系統的時候也有一戰之力。
一個應用系統一般會有多個應用相關的配置,雖然現在升級的時候只需要修改配置項,但是由人工逐項操作不免依然費時費力還容易出錯。此時,你需要華為雲的應用編排服務(AOS)。
在AOS中,一個應用系統對應一個堆棧,堆棧由模板加配置生成,只需要修改配置,其他一切由AOS負責。
依然以pytorch-classify這個應用為例,經過AOS設計器的設計,可以表示成上圖表示的應用系統。一切清清楚楚,所見即所得。
實操環節
由於傳統部署方式各種操作較為不便,沒有提供實操的步驟。下文提供的是華為雲上容器部署方式的操作指南,操作一遍之後即可得體會到AOS的便捷之處。
後文中AOS模板中包含了代碼,這種方式常見於開發環境,即代碼與環境分離,代碼的變動相較於環境而言較大的情況下。而在生產環境推薦直接將代碼打包進入鏡像中使用,但是對於當前演示沒有影響。
操作如下:
一、註冊華為雲帳號並實名認證(如已有華為雲實名認證帳號可直接進行下一步)
1.帳號註冊
進入華為雲官網首頁,點擊右上角的【註冊】按鈕:
設置帳號名、密碼、手機號、簡訊驗證碼並勾選「我已閱讀並同意《華為雲用戶協議》和《隱私政策聲明》」,單擊【同意協議並註冊】即可完成註冊。
2.實名認證
用戶註冊完華為雲帳號後需要進行實名認證才能使用相關服務,實名認證流程也非常簡單,在用戶中心可以看到實名認證的提示信息,根據頁面引導選擇用戶類型和認證類型進行認證即可。
二、開通 3 天免費容器集群
1.在【雲容器引擎】-【體驗中心】-【初級案例】模塊找到購買集群,單擊【體驗】按鈕根據界面引導進行免費集群和節點的創建。
2.資源創建完後,到【服務列表】-【彈性公網IP】找到創建好的彈性ip後記錄下來,在第三步部署pytorch-classify應用時會用到。
三、pytorch-classify代碼一鍵式部署
1.在【應用編排服務】-【模板市場】-【公共模板】模塊找到pytorch-classify應用,進入模板詳情頁,單擊【創建堆棧】按鈕。
2.填寫相關入參信息,包括堆棧名稱、彈性ip等,並選擇剛才創建的集群:
在輸入中填入從第二步中獲取到的彈性ip地址。
pytorch-classify選項卡中可以填寫鏡像的地址,由於該選項有默認值,直接略過即可。所有參數設置完以後,點擊【下一步】,點擊【創建堆棧】。
3.一鍵式部署pytorch-classify:
1 分鐘後堆棧創建成功。
4.進入堆棧詳情,在輸出參數中有pytorch-classify的訪問連結,點擊連結:
5.可以正常使用應用的功能:
寫在最後的話
前文中的AOS模板包含了整個應用系統中所必須的各項配置,如應用的部署、依賴的配置項、外部訪問所需要的服務,但是AOS能力並不止於此。AOS還有能力對於資源如虛機、網絡、安全組以及中間件如資料庫、消息隊列等進行創建等編排操作,再大的應用也和前文的操作一樣,一鍵式部署搞定~
如對AOS感興趣,可以訪問AOS幫助中心了解詳細內容。