讓tensorflow訪問minio生成的s3接口


0 背景

通常我們使用tensorflow訪問的基本都是本地文件,亦或是給定hdfs路徑,讓其訪問hdfs文件,而新晉的minio可很好地生成s3兼容的api接口,從而讓tensorflow直接讀取minio建立的分布式文件系統。本文簡單基於單機minio形式講解如何從頭讓tensorflow訪問minio

1 創建單機minio

minio官網所示,因minio是go寫的,故而安裝變得十分簡單:

首先下載:

http://dl.minio.org.cn/server/minio/release/linux-amd64/minio

其次將其賦予可執行權限,並指定本機目錄將其拉起

chmod +x minio
mkdir /data
./minio server /data

如上圖所示,我們可以通過瀏覽器很方便的訪問

其中瀏覽器右下角有個加號,其有2個功能:增加bucket和上傳文件

2 tensorflow訪問

minio官網中博客tensorflow的github中所述方法:
首先設定環境變量,其中我用的是默認的賬戶和密碼,

export AWS_ACCESS_KEY_ID=minioadmin
export AWS_SECRET_ACCESS_KEY=minioadmin
export AWS_REGION="us-east-1"
export S3_USE_HTTPS='0'
export S3_VERIFY_SSL='0'
export S3_ENDPOINT=http://你的ip:9000
# 在tf2.x版本上去掉http://開頭也是能訪問的,而在tf1.x中如果帶着http前綴,反而會報錯
# export S3_ENDPOINT=你的ip:9000 

然后可直接安裝tensorflow 2.4.1(2.x版本作為示例)

import tensorflow as tf
tf.io.gfile.listdir('s3://test/')

結果如下圖所示:

2.1 分布式tensorflow訓練時模型路徑

在分布式訓練時,s3的模型存儲記得多一級目錄,如采用s3://dir1/dir2的方式,而不是直接s3://dir1(別問我原因,我也很好奇,也很懵逼),否則會爆如下圖所示,同時也是tensorflow的issue這里同樣的問題

解決方法如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM