說明
最近放寒假回家了,準備租用阿裡雲的 GPU 雲伺服器 按量收費,訓練時臨時購買,訓練完了就釋放。但這樣的話,每次要上傳訓練資料,需要耗費很多時間。這時我想到了阿裡雲的 OSS對象存儲服務。
阿裡雲的 OSS服務相當于一個雲盤,按存儲量、通路次數、下載下傳流量 三項計費,而且外網下載下傳收費,内網之間通路不收錢。如此一來,我便可以隻花少量的存儲費用便可以把我的資料集托管在阿裡雲上。
使用體驗,阿裡雲的内網傳輸速度确實極快,經過我用多次傳輸 1G大小的檔案的體驗,内網速度在50M以上,如果你選擇的是SSD雲盤,估計速度會更快吧。
Notes
因為阿裡雲的 OSS 也按通路量收費,是以你就不要上傳太多的碎檔案了,最好打包成一個壓縮包,下載下傳到伺服器後再解壓。碎檔案不僅上傳速度慢,還需要多收費,得不償失呀!
OSS的使用
OSS使用起來還算友善,有提供 OSS-browser 這樣的用戶端軟體,這個軟體有界面,很友善操作使用。但問題就在于它有界面……
是以在 linux 雲伺服器上使用起來并不是很友善,是以,我打算結合阿裡雲OSS-SDKpython 來寫一個簡單的腳本來實作上傳、下載下傳、檢視 OSS 檔案的功能。
功能描述
總共實作了三個功能: 下載下傳、上傳、檢視檔案。
實作的功能很簡單,先設定好阿裡雲的 AccessKeyId 和 AccessKeySecret ,然後設定你所通路的 bucket 所在的區的連結和你所需要通路的 bucket 的名稱。之後就可以在 linux 終端上通路。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICOwczM1ITMwIDNxEDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
用法描述
下載下傳
python download_from_oss.py -f file1 -f file2 -o ./dest/
# -f , --files 你需要下載下傳的OSS上的檔案名稱,一個 -f 後面隻跟一個檔案
# -o, --outputPath 你需要統一放置在哪個本地路徑下,路徑不存在會自動建立
# -i, --internal 是否是阿裡雲内網, 不是内網的話,不用填寫
檢視檔案清單
python download_from_oss.py -l
# -l, --listfiles 檢視檔案
# -i, --internal 是否是阿裡雲内網, 不是内網的話,不用填寫
上傳檔案
python download_from_oss.py -f ./file1 -f ./file2 -p log/test1 --upload
# -f , --files 你需要上傳的本地檔案,一個 -f 後面隻跟一個檔案
# -p, --prefix 給你在 oss 上統一添加字首,可以模仿把檔案全部上傳到某個檔案夾中的操作
# -i, --internal 是否是阿裡雲内網, 不是内網的話,不用填寫
腳本下載下傳連結
我的腳本原本使用 git 作為版本控制,但目前該深度學習工程還沒有完全完成,是以暫時不開源。待到6月後驗收完成後,我就會放到 github 上開源。到時補上一個 github 項目連結。
Reference
- 阿裡雲GPU雲伺服器
- 阿裡雲OSS對象存儲服務
- 阿裡雲OSS-SDKpython