云服务器内容精选

  • 处理方法 如果是限流问题,日志中还会有如下错误,OBS相关的错误码解释请参见OBS官方文档,这种情况建议提工单。 图2 错误日志 如果是client数太多,尤其对于5G以上文件,OBS接口不支持直接调用,需要分多个线程分段拷贝,目前OBS侧服务端超时时间是30S,可以通过如下设置减少进程数。 # 设置进程数 os.environ['MOX_FILE_LARGE_FILE_TASK_NUM']=1 import moxing as mox # 拷贝文件 mox.file.copy_parallel(src_url=your_src_dir, dst_url=your_target_dir, threads=0, is_processing=False) 创建训练作业时,可通过环境变量“MOX_FILE_PARTIAL_MAXIMUM_SIZE”设置用户需要分段下载的大文件阈值(单位为Bytes),超过该阈值的文件将使用并发下载模式进行分段下载。
  • 处理方法 查看虚拟机所使用的存储空间,再查看回收站文件占用内存,根据实际删除回收站里不需要的大文件。 在Notebook实例详情页,查看实例的存储容量。 执行如下命令,排查虚拟机所使用的存储空间,一般接近存储容量,请排查回收站占用内存。 cd /home/ma-user/work du -h --max-depth 0 执行如下命令,排查回收站占用内存(回收站文件默认在/home/ma-user/work/.Trash-1000/files下)。 cd /home/ma-user/work/.Trash-1000/ du -ah 根据实际删除回收站不需要的大文件。(注:请谨慎操作,文件删除后不可恢复) rm {文件路径} 如果删除的文件夹或者文件中带有空格,需要给文件夹或文件加上单引号。如图示例: 执行如下命令,再次检查虚拟机所使用的存储空间。 cd /home/ma-user/work du -h --max-depth 0 如果Notebook实例的存储配置采用的是云硬盘EVS,可在Notebook详情页申请扩容磁盘。
  • 原因分析 出现该问题的可能原因如下: 程序运行过程中,产生了core文件,core文件占满了"/"根目录空间。 本地数据、文件保存将“/cache”目录3.5T空间用完了。 云上训练磁盘空间一般指如下两个目录的磁盘空间: “/”根目录,是docker中配置项“base size”,默认是10G,云上统一改为50G。 “/cache”目录满了,一般是3.5T存储空间满了,具体规格的空间大小可参见训练环境中不同规格资源“/cache”目录的大小。
  • 解决方法 参考如下示例进行图片显示。注意opencv加载的是BGR格式, 而matplotlib显示的是RGB格式。 Python语言: 1 2 3 4 5 6 from matplotlib import pyplot as plt import cv2 img = cv2.imread('图片路径') plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) plt.title('my picture') plt.show()
  • 处理方法 按照issues中的说明,应该是环境中的库冲突了,因此在启动脚本最开始之前,添加如下代码。 import os os.system("rm /home/work/anaconda3/lib/libmkldnn.so") os.system("rm /home/work/anaconda3/lib/libmkldnn.so.0") 必现的问题,使用本地Pycharm远程连接Notebook调试。
  • 处理方法 如果是OBS相关错误。 OBS文件不存在。The specified key does not exist。 参考日志提示“errorMessage:The specified key does not exist”章节处理。 用户OBS权限不足。 参考 5.5.1 日志提示“reason:Forbidden”。 OBS限流。 参考5.1.1 OBS拷贝过程中提示“BrokenPipeError: Broken pipe”。 OBS其他问题。 请参考OBS服务端错误码或者采集request id后向OBS客服进行咨询。 如果是空间不足。 参考 常见的磁盘空间不足的问题和解决办法章节处理。
  • 处理方法1 在ModelArts管理控制台,选择“全局配置”。 在用户名对应的“授权内容”列,单击“查看权限”,确认用户的委托权限是否已包含Tenant Administrator。 图1 查看委托权限详情 是,重新“启动”边缘服务,若还是“异常”则联系技术支持处理。 否,执行下一步,给用户添加委托权限。 添加委托权限。 如果是 IAM 子账号,没有修改委托权限,请联系管理员添加Tenant Adiministrator委托权限。 登录 统一身份认证 服务IAM管理控制台。 单击导航栏的“委托”,进入委托页面。 搜索ModelArts使用的委托,例如“modelarts_agency”,单击委托名称进入“基本信息”页面。 单击“授权”,添加Tenant Adiministrator权限,按操作指引完成授权。 授权完成后,重新“启动”边缘服务,观察状态是否正常。
  • Notebook 自定义镜像 故障基础排查 当制作的自定义镜像使用出现故障时,请用户按照如下方法排查: 用户自定义镜像没有ma-user用户及ma-group用户组; 用户自定义镜像中/home/ma-user目录,属主和用户组不是ma-user和ma-group; 用户自定义镜像必须满足用户目录/home/ma-user权限为750,不能为其他权限; 用户自定义镜像使用远程SSH功能,OpenSSH版本要兼容或高于8.0; 用户制作的自定义镜像,在本地执行docker run启动,无法正常运行; 用户自行安装了Jupyterlab服务导致冲突的,需要用户本地使用Jupyterlab命令罗列出相关的静态文件路径,删除并且卸载镜像中的Jupyterlab服务; 用户自己业务占用了开发环境官方的8888、8889端口的,需要用户修改自己的进程端口号; 用户的镜像指定了PYTHONPATH、sys.path导致服务启动调用冲突的,需在实例启动后,再指定PYTHONPATH、sys.path; 用户使用了已开启sudo权限的专属池,使用自定义镜像时,sudo工具未安装或安装错误; 用户使用的cann、cuda环境有兼容性问题; 用户的docker镜像配置错误、网络或防火墙限制、镜像构建问题(文件权限、依赖缺失或构建命令错误)等原因导致的。 用户的Anaconda环境中是否出现了以下问题: 在“{python_env}/lib”目录下存在以python开头的非法目录(例如“pythonNone”),正常目录名应该是python+版本号(例如“python3.7”),这可能是由于环境配置错误或意外操作导致的。 用户可能手动在Anaconda环境目录“{conda}/envs”下创建了空目录或在环境的“lib”目录下创建了非法目录,这种操作会破坏Anaconda的目录结构。 用户可能手动清空了某个环境目录内的文件,而这些文件是Anaconda环境所必需的,导致环境无法正常工作。 用户修改“/home/ma-user/.ssh”目录权限导致ssh无法使用的。.ssh目录权限参考如下: chmod 750 .ssh chmod 644 .ssh/authorized_keys chmod 644 .ssh/config chmod 640 .ssh/environment chmod 750 .ssh/etc chmod 640 .ssh/known_hosts chmod 750 .ssh/var chmod 600 .ssh/etc/ssh_host_rsa_key chmod 640 .ssh/etc/ssh_host_rsa_key.pub chmod 750 .ssh/etc/sshd_config chmod 750 .ssh/var/run/sshd.pid 父主题: Notebook中使用自定义镜像
  • 使用自定义依赖包的模型配置文件示例 如下示例中,定义了1.16.4版本的numpy的依赖环境。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 { "model_algorithm": "image_classification", "model_type": "TensorFlow", "runtime": "python3.6", "apis": [ { "url": "/", "method": "post", "request": { "Content-type": "multipart/form-data", "data": { "type": "object", "properties": { "images": { "type": "file" } } } }, "response": { "Content-type": "applicaton/json", "data": { "type": "object", "properties": { "mnist_result": { "type": "array", "item": [ { "type": "string" } ] } } } } } ], "metrics": { "f1": 0.124555, "recall": 0.171875, "precision": 0.00234938928519385, "accuracy": 0.00746268656716417 }, "dependencies": [ { "installer": "pip", "packages": [ { "restraint": "EXACT", "package_version": "1.16.4", "package_name": "numpy" } ] } ] }
  • 自定义镜像类型的模型配置文件示例 模型输入和输出与目标检测模型配置文件示例类似。 模型预测输入为图片类型时,request请求示例如下: 该实例表示模型预测接收一个参数名为images、参数类型为file的预测请求,在推理界面会显示文件上传按钮,以文件形式进行预测。 1 2 3 4 5 6 7 8 9 10 11 { "Content-type": "multipart/form-data", "data": { "type": "object", "properties": { "images": { "type": "file" } } } } 模型预测输入为json数据类型时,request请求示例如下: 该实例表示模型预测接收json请求体,只有一个参数名为input、参数类型为string的预测请求,在推理界面会显示文本输入框,用于填写预测请求。 1 2 3 4 5 6 7 8 9 10 11 { "Content-type": "application/json", "data": { "type": "object", "properties": { "input": { "type": "string" } } } } 完整请求示例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 { "model_algorithm": "image_classification", "model_type": "Image", "metrics": { "f1": 0.345294, "accuracy": 0.462963, "precision": 0.338977, "recall": 0.351852 }, "apis": [{ "url": "/", "method": "post", "request": { "Content-type": "multipart/form-data", "data": { "type": "object", "properties": { "images": { "type": "file" } } } }, "response": { "Content-type": "application/json", "data": { "type": "object", "required": [ "predicted_label", "scores" ], "properties": { "predicted_label": { "type": "string" }, "scores": { "type": "array", "items": [{ "type": "array", "minItems": 2, "maxItems": 2, "items": [{ "type": "string" }, { "type": "number" } ] }] } } } } }] }
  • 机器学习类型的模型配置文件示例 以下代码以XGBoost为例。 模型输入: { "req_data": [ { "sepal_length": 5, "sepal_width": 3.3, "petal_length": 1.4, "petal_width": 0.2 }, { "sepal_length": 5, "sepal_width": 2, "petal_length": 3.5, "petal_width": 1 }, { "sepal_length": 6, "sepal_width": 2.2, "petal_length": 5, "petal_width": 1.5 } ] } 模型输出: { "resp_data": [ { "predict_result": "Iris-setosa" }, { "predict_result": "Iris-versicolor" } ] } 配置文件: { "model_type": "XGBoost", "model_algorithm": "xgboost_iris_test", "runtime": "python2.7", "metrics": { "f1": 0.345294, "accuracy": 0.462963, "precision": 0.338977, "recall": 0.351852 }, "apis": [ { "url": "/", "method": "post", "request": { "Content-type": "application/json", "data": { "type": "object", "properties": { "req_data": { "items": [ { "type": "object", "properties": {} } ], "type": "array" } } } }, "response": { "Content-type": "applicaton/json", "data": { "type": "object", "properties": { "resp_data": { "type": "array", "items": [ { "type": "object", "properties": { "predict_result": {} } } ] } } } } } ] }
  • 预测分析模型配置文件示例 如下代码以TensorFlow引擎为例,您可以根据实际使用的引擎类型修改model_type参数后使用。 模型输入 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 { "data": { "req_data": [ { "buying_price": "high", "maint_price": "high", "doors": "2", "persons": "2", "lug_boot": "small", "safety": "low", "acceptability": "acc" }, { "buying_price": "high", "maint_price": "high", "doors": "2", "persons": "2", "lug_boot": "small", "safety": "low", "acceptability": "acc" } ] } } 模型输出 1 2 3 4 5 6 7 8 9 10 11 12 { "data": { "resp_data": [ { "predict_result": "unacc" }, { "predict_result": "unacc" } ] } } 配置文件 代码中request结构和response结构中的data参数是json schema数据结构。data/properties里面的内容对应“模型输入”和“模型输出”。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 { "model_type": "TensorFlow", "model_algorithm": "predict_analysis", "runtime": "tensorflow_2.1.0-cuda_10.1-py_3.7-ubuntu_18.04-x86_64", "metrics": { "f1": 0.345294, "accuracy": 0.462963, "precision": 0.338977, "recall": 0.351852 }, "apis": [ { "url": "/", "method": "post", "request": { "Content-type": "application/json", "data": { "type": "object", "properties": { "data": { "type": "object", "properties": { "req_data": { "items": [ { "type": "object", "properties": {} } ], "type": "array" } } } } } }, "response": { "Content-type": "application/json", "data": { "type": "object", "properties": { "data": { "type": "object", "properties": { "resp_data": { "type": "array", "items": [ { "type": "object", "properties": {} } ] } } } } } } } ], "dependencies": [ { "installer": "pip", "packages": [ { "restraint": "EXACT", "package_version": "1.15.0", "package_name": "numpy" }, { "restraint": "EXACT", "package_version": "5.2.0", "package_name": "Pillow" } ] } ] }
  • 图像分类模型配置文件示例 如下代码以TensorFlow引擎为例,您可以根据实际使用的引擎类型修改model_type参数后使用。 模型输入 key:images value:图片文件 模型输出 1 2 3 4 5 6 7 { "predicted_label": "flower", "scores": [ ["rose", 0.99], ["begonia", 0.01] ] } 配置文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 { "model_type": "TensorFlow", "model_algorithm": "image_classification", "runtime": "tensorflow_2.1.0-cuda_10.1-py_3.7-ubuntu_18.04-x86_64", "metrics": { "f1": 0.345294, "accuracy": 0.462963, "precision": 0.338977, "recall": 0.351852 }, "apis": [{ "url": "/", "method": "post", "request": { "Content-type": "multipart/form-data", "data": { "type": "object", "properties": { "images": { "type": "file" } } } }, "response": { "Content-type": "application/json", "data": { "type": "object", "properties": { "predicted_label": { "type": "string" }, "scores": { "type": "array", "items": [{ "type": "array", "minItems": 2, "maxItems": 2, "items": [ { "type": "string" }, { "type": "number" } ] }] } } } } }], "dependencies": [{ "installer": "pip", "packages": [{ "restraint": "ATLEAST", "package_version": "1.15.0", "package_name": "numpy" }, { "restraint": "", "package_version": "", "package_name": "Pillow" } ] }] } 如下代码以MindSpore引擎为例,您可以根据实际使用的引擎类型修改model_type参数后使用。 模型输入 key:images value:图片文件 模型输出 1 "[[-2.404526 -3.0476532 -1.9888215 0.45013925 -1.7018927 0.40332815\n -7.1861157 11.290332 -1.5861531 5.7887416 ]]" 配置文件 { "model_algorithm": "image_classification", "model_type": "MindSpore", "runtime": "mindspore_2.1.0-cann_6.3.2-py_3.7-euler_2.10.7-aarch64-snt9b", "metrics": { "f1": 0.124555, "recall": 0.171875, "precision": 0.0023493892851938493, "accuracy": 0.00746268656716417 }, "apis": [{ "url": "/", "method": "post", "request": { "Content-type": "multipart/form-data", "data": { "type": "object", "properties": { "images": { "type": "file" } } } }, "response": { "Content-type": "applicaton/json", "data": { "type": "object", "properties": { "mnist_result": { "type": "array", "item": [{ "type": "string" }] } } } } } ], "dependencies": [] }
  • apis参数代码示例 [{ "url": "/", "method": "post", "request": { "Content-type": "multipart/form-data", "data": { "type": "object", "properties": { "images": { "type": "file" } } } }, "response": { "Content-type": "applicaton/json", "data": { "type": "object", "properties": { "mnist_result": { "type": "array", "item": [ { "type": "string" } ] } } } } }]
  • 目标检测模型配置文件示例 如下代码以TensorFlow引擎为例,您可以根据实际使用的引擎类型修改model_type参数后使用。 模型输入 key:images value:图片文件 模型输出 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 { "detection_classes": [ "face", "arm" ], "detection_boxes": [ [ 33.6, 42.6, 104.5, 203.4 ], [ 103.1, 92.8, 765.6, 945.7 ] ], "detection_scores": [0.99, 0.73] } 配置文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 { "model_type": "TensorFlow", "model_algorithm": "object_detection", "runtime": "tensorflow_2.1.0-cuda_10.1-py_3.7-ubuntu_18.04-x86_64", "metrics": { "f1": 0.345294, "accuracy": 0.462963, "precision": 0.338977, "recall": 0.351852 }, "apis": [{ "url": "/", "method": "post", "request": { "Content-type": "multipart/form-data", "data": { "type": "object", "properties": { "images": { "type": "file" } } } }, "response": { "Content-type": "application/json", "data": { "type": "object", "properties": { "detection_classes": { "type": "array", "items": [{ "type": "string" }] }, "detection_boxes": { "type": "array", "items": [{ "type": "array", "minItems": 4, "maxItems": 4, "items": [{ "type": "number" }] }] }, "detection_scores": { "type": "array", "items": [{ "type": "number" }] } } } } }], "dependencies": [{ "installer": "pip", "packages": [{ "restraint": "EXACT", "package_version": "1.15.0", "package_name": "numpy" }, { "restraint": "EXACT", "package_version": "5.2.0", "package_name": "Pillow" } ] }] }