ModelArts解压OBS上压缩包
ModelArts解压OBS上压缩包实例教程
- 一、使用ModelArts中训练作业运行脚本来解压OBS上压缩包
- 1、编码
- 2、运行
- 二、使用ModelArts中Notebook来解压OBS上压缩包
- 1、使用moxing复制压缩包到Notebook
- 2、将解压文件回传至OBS
- 三、OBS上解压大型压缩包
- 1、下载并解压数据
- 2、根据子文件夹压缩文件
- 使用ModelArts中Notebook解压多个子压缩包并回传
一、使用ModelArts中训练作业运行脚本来解压OBS上压缩包
1、编码
参考资料: 如何在Notebook中上传下载OBS文件?
#下载一个OBS文件夹sub_dir_0,从OBS下载至Notebook
mox.file.copy_parallel('obs://bucket_name/sub_dir_0', '/home/ma-user/work/sub_dir_0')
#下载一个OBS文件obs_file.txt,从OBS下载至Notebook
mox.file.copy('obs://bucket_name/obs_file.txt', '/home/ma-user/work/obs_file.txt')#上传一个OBS文件夹sub_dir_0,从Notebook上传至OBS
mox.file.copy_parallel('/home/ma-user/work/sub_dir_0', 'obs://bucket_name/sub_dir_0')
#上传一个OBS文件obs_file.txt,从Notebook上传至OBS
mox.file.copy('/home/ma-user/work/obs_file.txt', 'obs://bucket_name/obs_file.txt')
基于此编写代码,思路通过os.system将压缩包解压后回传至OBS。
import moxing as mox
import os
import argparsedef unzip(data_path, zip_name, desc_path):tar_path = os.path.join(data_path, zip_name)if zip_name.endswith('zip'):command = 'unzip -d {} {}'.format(data_path + '/', tar_path)else:print('压缩包格式不符合要求!')return -1print('*'*10+'start unzip'+'*'*10)print(command)os.system(command)print('*'*10+'finish unzip'+'*'*10)for root, folders, files in os.walk(data_path):for file in files:file_path = os.path.join(root, file)if file_path != tar_path:file_path_info = file_path.replace(data_path, '')file_path_info = file_path_info.split(os.sep)tmp_desc_path = desc_pathfor info in file_path_info:if info != '':tmp_desc_path = os.path.join(tmp_desc_path, info)mox.file.copy(file_path, tmp_desc_path)print('*'*10+'finish transfer'+'*'*10)if __name__ == '__main__':parser = argparse.ArgumentParser()parser.add_argument('--data_url', required=False, help='Location of data.')args, unknown = parser.parse_known_args()data_path = os.path.abspath(args.data_url)unzip(data_path, 'data.zip', 'obs://gyz/output/')
2、运行
如何在ModelArts上运行程序,参考 ModelArts运行mindspore程序实例教程 。目前只支持zip格式,需要解压其他格式压缩包,请修改下面的代码。
if zip_type == 'zip':commend = 'unzip -d {} {}'.format(data_path + '/', tar_path)
将数据压缩成zip格式,上传至OBS;
在创建训练作业时指定压缩包在OBS上的位置。
运行程序,会将数据解压,最后回传到指定路径obs://gyz/output/中。
二、使用ModelArts中Notebook来解压OBS上压缩包
1、使用moxing复制压缩包到Notebook
进入notebook之后新建Python文件;
使用moxing复制压缩包到notebook中;
import moxing as moxmox.file.copy_parallel('obs://automation-system/data_vision/ImageNet1K/ImageNet1K.tar', 'ImageNet1K.tar')
打开terminal;
运行python脚本,可发现压缩包被复制到notebook中。
2、将解压文件回传至OBS
然后解压压缩包,编写代码把文件回传到OBS中。新建transfer_file.py脚本,编写代码如下:
import moxing as mox
import osif __name__ == '__main__':data_folder = 'data'desc_path = 'obs://gyz/output/'cwd = os.getcwd()data_path = os.path.join(cwd, data_folder)for root, folders, files in os.walk(data_path):for file in files:file_path = os.path.join(root, file)file_path_info = file_path.replace(data_path, '')file_path_info = file_path_info.split(os.sep)tmp_desc_path = desc_path+data_folder+'/'for info in file_path_info:if info != '':tmp_desc_path = os.path.join(tmp_desc_path, info)mox.file.copy(file_path, tmp_desc_path)
执行脚本,即可将解压的文件复制到OBS中。
三、OBS上解压大型压缩包
在解压OBS上150G大小的数据集ImageNet1K.tar时,发现上述两种方式均失败了。上述两种方式其实都是把数据复制到ModelArts中,解压后再回传到OBS中,而ModelArts可能禁止一次性传输太大的数据或者存在空间不足的问题。经过尝试,摸索了一种方式,首先直接使用OBS将ImageNet1K.tar下载到本地,本地解压后本来打算直接用OBS上传,但发现OBS直接上传会很慢。因此采用了一种折中的方式,首先按子文件夹将数据压缩成多个压缩包;然后将压缩包上传至OBS;最后使用ModelArts中notebook依次解压OBS上各个小型压缩包,并把数据回传至OBS;过程异常曲折,更好的办法还在探寻中。
1、下载并解压数据
将OBS上数据下载到本地,解压即可;
2、根据子文件夹压缩文件
ImageNet1K.tar解压后,将rain下面的多个子文件夹进行压缩;
import os
import zipfiledef zip_dir(dirname, zipfilename):filelist = []if os.path.isfile(dirname):filelist.append(dirname)else:for root, dirs, files in os.walk(dirname):for name in files:filelist.append(os.path.join(root, name))zf = zipfile.ZipFile(zipfilename, "w", zipfile.zlib.DEFLATED)for tar in filelist:arcname = tar[len(dirname):]# print arcnamezf.write(tar, arcname)zf.close()if __name__ == '__main__':data_folder = r'E:\CLS-LOC\train'folder_list = os.listdir(r'E:\CLS-LOC\train')folder_num = len(folder_list)idx = 1for folder in folder_list:if folder.endswith('zip'):continuefolder_path = os.path.join(data_folder, folder)zip_path = folder_path + '.zip'zip_dir(folder_path, zip_path)print('finish: {}/{}'.format(idx, folder_num))idx += 1
之后把多个子文件夹上传到OBS上。
使用ModelArts中Notebook解压多个子压缩包并回传
使用ModelArts中Notebook运行如下程序,将多个子压缩包先复制到Notebook中,然后解压之后依次回传到OBS;为了防止Notebook中空间不够,每完成一个,则删除Notebook上复制的压缩包与解压的文件。
import moxing as mox
import osdef unzip_in_obs(obs_folder, output_folder):if not os.path.exists(output_folder):os.makedirs(output_folder)file_list = mox.file.list_directory(obs_folder)for file in file_list:if file.endswith('zip'):obs_path = os.path.join(obs_folder, file)output_path = os.path.join(output_folder, file)mox.file.copy_parallel(obs_path, output_path)print('copy file: '+file)zip_name = file.replace('.zip', '')zip_folder = os.path.join(output_folder, zip_name)if not os.path.exists(zip_folder):os.makedirs(zip_folder)zip_path = os.path.join(output_folder, file)command = 'unzip -d {} {}'.format(zip_folder + '/', zip_path)print(command)os.system(command)for root, folders, files in os.walk(zip_folder):for file in files:file_path = os.path.join(root, file)file_path_info = file_path.replace(output_folder, '')file_path_info = file_path_info.split(os.sep)desc_path = obs_folderfor info in file_path_info:if info != '':desc_path = os.path.join(desc_path, info)mox.file.copy_parallel(file_path, desc_path)os.system('rm -rf {}'.format(zip_path))os.system('rm -rf {}'.format(zip_folder))if __name__ == '__main__':obs_folder = 'obs://gyz/data/CLS-LOC/train/' output_folder = 'train'unzip_in_obs(obs_folder, output_folder)
经历曲折且漫长的过程之后,数据被依次解压。
ModelArts解压OBS上压缩包相关推荐
- 【解压zip.00**压缩包】
[解压zip.00**压缩包] 1 解压 .zip.001 .zip.002 .zip.003 1.1 方法一[网上的方法,亲测未成功] 1.2 方法二[win11系统下,亲测成功] 2 解压 *** ...
- tar xvf 解压一切格式压缩包
tar xvf 解压一切格式压缩包,再也不为tar.bz2/tar.gz/tar.xz/tar.xx不同格式的压缩包记不同的命令了. 对于tar版本大于1.22(http://www.gnu.org/ ...
- java实现上传zip解压及判断压缩包文件夹功能
转自:https://blog.csdn.net/qq_17025903/article/details/80408180#commentBox 直接上Service,通过代码看思路贯穿整个功能,很多 ...
- 服务器解压文件出错,压缩包解压错误我的电脑上,所以的压缩包解压时都会出错:1:在别的 爱问知识人...
根据你的描述,你的情况应该属于下列原因的第三种: 压缩包解压错误原因有几种: (1)网络传输状况不好(如断线过多,开的线程过多,服务器人太多导致不能连接太多等)导致下载下来的文件损坏! (2)站点提供 ...
- 安卓UI图分离器(支持ios@2x3x图转成安卓xhdpi,xxhdpi图,最新支持拖入并自动解压.zip图片压缩包)
如果UI是个ios粉的话,可能给的切图可能只会给ios分类,而不会给安卓分类,这样安卓用图片资源的话就苦逼了,,,如下图... 人生苦啊... 思来想去,这种搬砖的活应该交给程序来做,于是花了点时间写 ...
- mac 解压_Mac上哪款解压工具好用啊?
Mac上哪款解压工具好用啊?SmartZipper for Mac软件是mac平台上的一款解压缩软件,能够用于处理比存档实用程序更多的格式,例如RAR,7z,ISO,CAB,Zip,Lzma,Tar, ...
- nodejs/electron 解压加密zip 压缩包方法
方法一:使用node-unzipper 加密压缩包的解压,这个的话这个博客上写的很好,我开始就是用他的方法做的 上诉方法有个很大的缺陷,博主也指出来了,就是加密解压大文件会很慢,这个我测试的时候,发现 ...
- 微信小程序文件下载及在线打开指定文档,解压Zip格式压缩包
1.微信小程序文件下载 wx.downloadFile({url:'https://www.baidu.com/test', //(仅为示例接口,注:这里的域名需要到小程序公众平台添加)filePat ...
- ubuntu18批量解压和删除压缩包以及文件夹操作
ubuntu18批量解压缩包 1 批量解压压缩包 1.1 第一种方法:xargs传参 1.2 第二种方法:for循环 2 解压单个压缩包 3 删除指定后缀文件 4 一个文件夹移动到另一个文件夹 4.1 ...
- 使用Java解压zip格式压缩包
Maven引用 使用了apache的 ZipArchiveEntry 和 FileUtils ,具体的maven引用如下(版本按需指定) <!-- https://mvnrepository.c ...
最新文章
- sql2008表结构查看_【赵强老师】Oracle数据库的存储结构
- 线程的状态:分离(detached)和joinable(可结合的)
- Algorithm:C++语言实现之图论算法相关(图搜索广度优先BFS、深度优先DFS,最短路径SPF、带负权的最短路径Bellman-ford、拓扑排序)
- Android 使用Adapter适配器模式实现无线轮播BannerView
- 计算机所有数据的表示方式都是用,计算机数据表示
- linux挂载查看、添加与取消
- 【软件工程第三次作业】
- C语言程序设计线上测试01,2001年C语言程序设计笔试A卷.doc
- 多目标函数 matlab 粒子群_【LIBSVM】基于群智能优化算法的支持向量机 (SVM) 参数优化...
- 图说单播,组播,广播,选播和地域播
- WannaCry深度详细分析报告 转
- PostgreSQL 按周、月、天 统计问题
- UISwitch的使用
- 基于Java毕业设计幼儿园教育管理信息系统演示2021源码+系统+mysql+lw文档+部署软件
- p2p-如何拯救k8s镜像分发的阿喀琉斯之踵 1
- Insomni’hack CTF-l33t-hoster复现分析
- 山东移动携手华云数据打造DICT战略合作伙伴生态圈 推动区域数字经济高质量发展
- Scratch-(六)-妙笔生花
- 小学期助教感受-Funcode游戏编程
- 白名单模板_solidworks打开stp显示默认模板无效?如何解决!
热门文章
- 如何删除双系统中的一个系统
- 用html把图片整体往左挪动,网页制作如何让图片从左到右循环移动
- mac 输入法/键盘 锁定
- android gc卡顿,由于频繁GC造成的界面卡顿原因分析
- 格力董明珠和小米雷军的10亿赌局 --- 当年的理念谁赢谁输
- ubuntu20.04上编译android 7.1
- Windows设置redis开启自动启动
- android接入微信登录授权提示{errcode:40125,errmsg:invalid appsecret, view more at 。。。解决办法
- 关于谷歌浏览器62版本之后引用video.js不能自动播放的问题(Cross-origin plugin content from http://vjs.zencdn.net/swf/5.0.0-rc
- 如何查询芯片 IC 元器件 的datasheet数据手册