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上压缩包相关推荐

  1. 【解压zip.00**压缩包】

    [解压zip.00**压缩包] 1 解压 .zip.001 .zip.002 .zip.003 1.1 方法一[网上的方法,亲测未成功] 1.2 方法二[win11系统下,亲测成功] 2 解压 *** ...

  2. tar xvf 解压一切格式压缩包

    tar xvf 解压一切格式压缩包,再也不为tar.bz2/tar.gz/tar.xz/tar.xx不同格式的压缩包记不同的命令了. 对于tar版本大于1.22(http://www.gnu.org/ ...

  3. java实现上传zip解压及判断压缩包文件夹功能

    转自:https://blog.csdn.net/qq_17025903/article/details/80408180#commentBox 直接上Service,通过代码看思路贯穿整个功能,很多 ...

  4. 服务器解压文件出错,压缩包解压错误我的电脑上,所以的压缩包解压时都会出错:1:在别的 爱问知识人...

    根据你的描述,你的情况应该属于下列原因的第三种: 压缩包解压错误原因有几种: (1)网络传输状况不好(如断线过多,开的线程过多,服务器人太多导致不能连接太多等)导致下载下来的文件损坏! (2)站点提供 ...

  5. 安卓UI图分离器(支持ios@2x3x图转成安卓xhdpi,xxhdpi图,最新支持拖入并自动解压.zip图片压缩包)

    如果UI是个ios粉的话,可能给的切图可能只会给ios分类,而不会给安卓分类,这样安卓用图片资源的话就苦逼了,,,如下图... 人生苦啊... 思来想去,这种搬砖的活应该交给程序来做,于是花了点时间写 ...

  6. mac 解压_Mac上哪款解压工具好用啊?

    Mac上哪款解压工具好用啊?SmartZipper for Mac软件是mac平台上的一款解压缩软件,能够用于处理比存档实用程序更多的格式,例如RAR,7z,ISO,CAB,Zip,Lzma,Tar, ...

  7. nodejs/electron 解压加密zip 压缩包方法

    方法一:使用node-unzipper 加密压缩包的解压,这个的话这个博客上写的很好,我开始就是用他的方法做的 上诉方法有个很大的缺陷,博主也指出来了,就是加密解压大文件会很慢,这个我测试的时候,发现 ...

  8. 微信小程序文件下载及在线打开指定文档,解压Zip格式压缩包

    1.微信小程序文件下载 wx.downloadFile({url:'https://www.baidu.com/test', //(仅为示例接口,注:这里的域名需要到小程序公众平台添加)filePat ...

  9. ubuntu18批量解压和删除压缩包以及文件夹操作

    ubuntu18批量解压缩包 1 批量解压压缩包 1.1 第一种方法:xargs传参 1.2 第二种方法:for循环 2 解压单个压缩包 3 删除指定后缀文件 4 一个文件夹移动到另一个文件夹 4.1 ...

  10. 使用Java解压zip格式压缩包

    Maven引用 使用了apache的 ZipArchiveEntry 和 FileUtils ,具体的maven引用如下(版本按需指定) <!-- https://mvnrepository.c ...

最新文章

  1. sql2008表结构查看_【赵强老师】Oracle数据库的存储结构
  2. 线程的状态:分离(detached)和joinable(可结合的)
  3. Algorithm:C++语言实现之图论算法相关(图搜索广度优先BFS、深度优先DFS,最短路径SPF、带负权的最短路径Bellman-ford、拓扑排序)
  4. Android 使用Adapter适配器模式实现无线轮播BannerView
  5. 计算机所有数据的表示方式都是用,计算机数据表示
  6. linux挂载查看、添加与取消
  7. 【软件工程第三次作业】
  8. C语言程序设计线上测试01,2001年C语言程序设计笔试A卷.doc
  9. 多目标函数 matlab 粒子群_【LIBSVM】基于群智能优化算法的支持向量机 (SVM) 参数优化...
  10. 图说单播,组播,广播,选播和地域播
  11. WannaCry深度详细分析报告 转
  12. PostgreSQL 按周、月、天 统计问题
  13. UISwitch的使用
  14. 基于Java毕业设计幼儿园教育管理信息系统演示2021源码+系统+mysql+lw文档+部署软件
  15. p2p-如何拯救k8s镜像分发的阿喀琉斯之踵 1
  16. Insomni’hack CTF-l33t-hoster复现分析
  17. 山东移动携手华云数据打造DICT战略合作伙伴生态圈 推动区域数字经济高质量发展
  18. Scratch-(六)-妙笔生花
  19. 小学期助教感受-Funcode游戏编程
  20. 白名单模板_solidworks打开stp显示默认模板无效?如何解决!

热门文章

  1. 如何删除双系统中的一个系统
  2. 用html把图片整体往左挪动,网页制作如何让图片从左到右循环移动
  3. mac 输入法/键盘 锁定
  4. android gc卡顿,由于频繁GC造成的界面卡顿原因分析
  5. 格力董明珠和小米雷军的10亿赌局 --- 当年的理念谁赢谁输
  6. ubuntu20.04上编译android 7.1
  7. Windows设置redis开启自动启动
  8. android接入微信登录授权提示{errcode:40125,errmsg:invalid appsecret, view more at 。。。解决办法
  9. 关于谷歌浏览器62版本之后引用video.js不能自动播放的问题(Cross-origin plugin content from http://vjs.zencdn.net/swf/5.0.0-rc
  10. 如何查询芯片 IC 元器件 的datasheet数据手册