云服务器内容精选

  • 操作步骤 以“root”帐号,通过密钥或密码的方式,登录到源端节点1上 进入解压后的文件目录,使用vi打开配置文件 sync.conf。 cd /opt/huawei/DirSyncScript vi sync.conf 请参考表1,修改配置参数后保存。 表1 参数配置 参数 说明 示例 Source_Directory 源端服务器需要同步的目录。如果有多个目录,请用"/"分割。 注意: 如果源端目录末尾没有加"/",最终同步时会将目录本身同步过去;如果末尾有"/",就是将目录内部的所有内容同步过去。 例如源端设置为"/src1,/src2/" ,目的端为"/dst1 , /dst2",则同步后/dst1 中包含的是/src1文件夹, /dst2中的是/src2中的所有内容(不含/src2文件夹)。 /src1/, /src2/, /src3/ Destination_Host 目的服务器的IP地址 192.168.0.11 Destination_Directory 目的端目录,多个目录用"/"分割。要求分割后目的端目录数与源端一致。 /dst1, /dst2, /dst3 以下目录为示例,具体根据实际情况填写:
  • 创建OBS桶 ModelArts使用 对象存储服务 (Object Storage Service,简称OBS)进行数据存储以及模型的备份和快照,实现安全、高可靠和低成本的存储需求。因此,在使用ModelArts之前通常先创建一个OBS桶,然后在OBS桶中创建文件夹用于存放数据。 本文档也以将运行代码以及输入输出数据存放OBS为例,请参考创建OBS桶,例如桶名:standard-llama2-13b。并在该桶下创建文件夹目录用于后续存储代码使用,例如:training_data。
  • 操作步骤 登录Fabric工作空间管理台,单击“服务授权”。 图1 服务授权界面 在服务授权页面配置授权委托。用户可以根据实际需要参照委托策略进行配置委托权限。 图2 服务授权配置 表1 委托策略 委托策略名称 权限项 是否必须 功能 FABRIC_COMMON_POLICY iam:tokens:assume iam:groups:listGroups iam:users:listUsers iam:roles:listRoles iam:groups:listGroupsForUser iam:agencies:listAgencies iam:roles:getRole iam:permissions:listRolesForAgency obs:bucket:ListAllMyBuckets obs:bucket:GetLifecycleConfigurationd obs:bucket:GetBucketLocation obs:bucket:ListBucket obs:object:GetObjectVersion obs:object:GetObject DataArtsFabric:workspace:list DataArtsFabric:endpoint:list DataArtsFabric:endpoint:show DataArtsFabric:endpoint:listRoute 是 IAM 相关权限:仅委托部分只读权限,保证服务能够比较当前用户的委托和服务需要的委托,用于提示用户进行委托更新。 OBS相关权限:服务所有业务,包括作业,推理,都需要OBS文件的读取权限,保证后续能够从用户的OBS桶拉取到作业文件进行执行,模型文件进行部署。针对OBS的权限,用户可以在IAM的委托界面手动修改fabric_admin_trust委托中OBS相关的部分,限制服务可以访问的OBS资源,具体如何设置参考IAM权限,OBS自定义策略样例。 FABRIC_ AOM _POLICY aom:alarm:put 否 Fabric服务使用运维管理服务所需的权限。如果需要指标监控和告警能力,需要开启。 FABRIC_LAKEFORMATION_POLICY lakeformation:accessTenant:grant lakeformation:access:delete lakeformation:access:create lakeformation:access:describe lakeformation:access:describe lakeformation:agreement:grant lakeformation:agreement:describe lakeformation:agreement:cancel lakeformation:agency:create lakeformation:agency:drop lakeformation:agency:describe 否 Fabric服务使用LakeFormation服务所需的权限。如果需要对接LakeFormation,则需要开启。 FABRIC_ SMN _POLICY smn:topic:publish 否 Fabric服务使用 消息通知 服务所需的权限。如果需要消息通知能力,则需要开启。 除必选的委托,其他委托权限都支持取消。
  • 定义 云商店每次调用商家的接口时会根据一定规则对请求生成signature,并且将signature通过URL PA RAM S的方式添加到URL上,商家在接收到请求后需要同样的规则对请求体进行重新计算signature,并且与云商店传递的signature相比较,完全相同即为校验通过,通过URL PARAMS传递的参数有: 参数 取值 描述 signature String 加密签名,通过一定的规则对请求进行签名产生的值。 timestamp Long UNIX 时间戳(单位毫秒),商家需要校验这个时间戳与当前时间相差不超过60s。 nonce String 随机字符串,云商店在每次调用时会随机生成,商家可以通过对这个随机数的缓存来防御API重放攻击。
  • 举例 商家收到的调用数据示例如下: 请求示例: POST https://example.isv.com/produceAPI/v2/tenantSync Content-Type: application/json x-sign:11C4CD6279191DE931DEF5C51531DFFA9D37969F4E356B8A3A6D8DE4FB357A48 x-timestamp:1680508066618 x-nonce:50D83FDECAED6CCD8EF597F2A577950527928BA287D04E6036E92B2806FD17DA {"instanceId": "huaiweitest123456","orderId": " CS 1906666666ABCDE","tenantId": "68cbc86****************880d92f36422fa0e","tenantCode": "huawei","name": "huaiweitest","domainName": "https://example.tenantaccount.com","flag": 1,"testFlag": 0,"timeStamp": "20220413093539534"} 响应示例: HTTP/1.1 200 OK Content-Type: application/json { " resultCode": "000000", " resultMsg": "Success" }
  • 生成规则 对请求参数排序,根据参数名自然排序,例如,以字母a开头的参数名会排在以b开头的参数前面,如果首字母相同,将会对第二个字母进行排序,以此类推,直到字符串结束 获取规范请求字符串,规则: canonicalRequest = accessKey + nonce + timestamp + Lowercase(HexEncode(HMAC_SHA256 (RequestPayload))) 3.根据规则对规范请求字符串,密钥取signature值,规则: signature = HexEncode(HMAC_SHA256(canonicalRequest))
  • 定义 云商店每次调用商家的接口时会根据一定规则对请求生成x-sign,并且将x-sign通过HEADER PARAMS的方式添加到URL上,商家在接收到请求后需要同样的规则对请求体进行重新计算x-sign,并且与云商店传递的x-sign相比较,完全相同即为校验通过,通过HEADER PARAMS传递的参数有: 参数 取值 描述 x-sign String 加密签名,通过一定的规则对请求进行签名产生的值。 x-timestamp String UNIX 时间戳(单位毫秒),商家需要校验这个时间戳与当前时间相差不超过60s。 x-nonce String 随机字符串,云商店在每次调用时会随机生成,商家可以通过对这个随机数的缓存来防御API重放攻击。
  • 举例 商家收到的调用请求数据示例如下: curl -X POST -H 'Content-Type: application/json' 'https://www.isvwebsite.com/saasproduce?signature=af71c5a7ef45310b8dc05ab15f7da50189ffa81a95cc284379ebaa5eb61155c0×tamp=1716363778801&nonce=RLLUammMSInlrNWb' --data '{"activity":"newInstance","buyerInfo":{"customerId":"688055390f3049f283fe9f1aa90f1858","customerName":"CBC_marketplace_mwx616072_01","userId":"1e86066c22754361933f607df834e4fe","userName":"CBC_marketplace_mwx616072_01","mobilePhone":"18652996659","email":"mapengfei8@huawei.com"},"orderInfo":[{"businessId":"8a2c4e6f-405a-4f8d-8e24-f41090522646","orderId":"CS2210101920BWXLK","trialFlag":"0","orderAmount":12.78,"chargingMode":"PERIOD","periodType":"month","periodNumber":5,"provisionType":1,"productInfo":[{"skuCode":"a63ee5c9-4f86-11ed-9f95-fa163e8cb3b2","productId":"OFFI788963615933718528","linearValue":20}],"createTime":"20221024194509","expireTime":"20221224194509","extendParams":[{"name":"emailDomainName","value":"test.xxxx.com"},{"name":"extendParamName","value":"extendParamValue"}]}],"testFlag":"1"}'
  • 生成规则 对请求参数排序,根据参数名自然排序,例如,以字母a开头的参数名会排在以b开头的参数前面,如果首字母相同,将会对第二个字母进行排序,以此类推,直到字符串结束 根据规则对规范请求字符串,密钥取x-sign值,规则: canonicalRequest = accessKey + nonce + timestamp + RequestPayload x-sign = HexEncode(HMAC_SHA256(canonicalRequest))
  • 准备本地横向联邦数据资源 上传数据集文件(作业参与方) 上传数据集文件到计算节点挂载路径下,供计算节点执行的脚本读取。如果是主机挂载,上传到宿主机的挂载路径下。如果是OBS挂载,使用华为云提供的对象存储服务,上传到当前计算节点使用的对象桶中。 图5 对象桶名称 此处以主机挂载为例: 创建一个主机挂载的计算节点Agent1,挂载路径为/tmp/tics1/。 使用文件上传工具上传包含数据集iris1.csv的dataset文件夹到宿主机/tmp/tics1/目录下。 iris1.csv内容如下: sepal_length,sepal_width,petal_length,petal_width,class 5.1,3.5,1.4,0.3,Iris-setosa 5.7,3.8,1.7,0.3,Iris-setosa 5.1,3.8,1.5,0.3,Iris-setosa 5.4,3.4,1.7,0.2,Iris-setosa 5.1,3.7,1.5,0.4,Iris-setosa 4.6,3.6,1,0.2,Iris-setosa 5.1,3.3,1.7,0.5,Iris-setosa 4.8,3.4,1.9,0.2,Iris-setosa 5,3,1.6,0.2,Iris-setosa 5,3.4,1.6,0.4,Iris-setosa 5.2,3.5,1.5,0.2,Iris-setosa 5.2,3.4,1.4,0.2,Iris-setosa 4.7,3.2,1.6,0.2,Iris-setosa 4.8,3.1,1.6,0.2,Iris-setosa 5.4,3.4,1.5,0.4,Iris-setosa 5.2,4.1,1.5,0.1,Iris-setosa 5.5,4.2,1.4,0.2,Iris-setosa 4.9,3.1,1.5,0.1,Iris-setosa 5,3.2,1.2,0.2,Iris-setosa 5.5,3.5,1.3,0.2,Iris-setosa 4.9,3.1,1.5,0.1,Iris-setosa 4.4,3,1.3,0.2,Iris-setosa 5.1,3.4,1.5,0.2,Iris-setosa 5,3.5,1.3,0.3,Iris-setosa 4.5,2.3,1.3,0.3,Iris-setosa 4.4,3.2,1.3,0.2,Iris-setosa 5,3.5,1.6,0.6,Iris-setosa 5.1,3.8,1.9,0.4,Iris-setosa 4.8,3,1.4,0.3,Iris-setosa 5.1,3.8,1.6,0.2,Iris-setosa 4.6,3.2,1.4,0.2,Iris-setosa 5.3,3.7,1.5,0.2,Iris-setosa 5,3.3,1.4,0.2,Iris-setosa 6.8,2.8,4.8,1.4,Iris-versicolor 6.7,3,5,1.7,Iris-versicolor 6,2.9,4.5,1.5,Iris-versicolor 5.7,2.6,3.5,1,Iris-versicolor 5.5,2.4,3.8,1.1,Iris-versicolor 5.5,2.4,3.7,1,Iris-versicolor 5.8,2.7,3.9,1.2,Iris-versicolor 6,2.7,5.1,1.6,Iris-versicolor 5.4,3,4.5,1.5,Iris-versicolor 6,3.4,4.5,1.6,Iris-versicolor 6.7,3.1,4.7,1.5,Iris-versicolor 6.3,2.3,4.4,1.3,Iris-versicolor 5.6,3,4.1,1.3,Iris-versicolor 5.5,2.5,4,1.3,Iris-versicolor 5.5,2.6,4.4,1.2,Iris-versicolor 6.1,3,4.6,1.4,Iris-versicolor 5.8,2.6,4,1.2,Iris-versicolor 5,2.3,3.3,1,Iris-versicolor 5.6,2.7,4.2,1.3,Iris-versicolor 5.7,3,4.2,1.2,Iris-versicolor 5.7,2.9,4.2,1.3,Iris-versicolor 6.2,2.9,4.3,1.3,Iris-versicolor 5.1,2.5,3,1.1,Iris-versicolor 5.7,2.8,4.1,1.3,Iris-versicolor 6.3,3.3,6,2.5,Iris-virginica 5.8,2.7,5.1,1.9,Iris-virginica 7.1,3,5.9,2.1,Iris-virginica 6.3,2.9,5.6,1.8,Iris-virginica 6.5,3,5.8,2.2,Iris-virginica 7.6,3,6.6,2.1,Iris-virginica 4.9,2.5,4.5,1.7,Iris-virginica 7.3,2.9,6.3,1.8,Iris-virginica 6.7,2.5,5.8,1.8,Iris-virginica 7.2,3.6,6.1,2.5,Iris-virginica 6.5,3.2,5.1,2,Iris-virginica 6.4,2.7,5.3,1.9,Iris-virginica 6.8,3,5.5,2.1,Iris-virginica 5.7,2.5,5,2,Iris-virginica 5.8,2.8,5.1,2.4,Iris-virginica 6.4,3.2,5.3,2.3,Iris-virginica 6.5,3,5.5,1.8,Iris-virginica 7.7,3.8,6.7,2.2,Iris-virginica 7.7,2.6,6.9,2.3,Iris-virginica 6,2.2,5,1.5,Iris-virginica 6.9,3.2,5.7,2.3,Iris-virginica 5.6,2.8,4.9,2,Iris-virginica 7.7,2.8,6.7,2,Iris-virginica 6.3,2.7,4.9,1.8,Iris-virginica 6.7,3.3,5.7,2.1,Iris-virginica 7.2,3.2,6,1.8,Iris-virginica 为了使容器内的计算节点程序有权限能够读取到文件,使用命令chown -R 1000:1000 /tmp/tics1/修改挂载目录下的文件的属主和组为1000:1000。 在第二台主机上创建计算节点Agent2,挂载路径为/tmp/tics2/。上传包含数据集iris2.csv的dataset文件夹到宿主机目录下,修改属主。 iris2.csv的内容如下: sepal_length,sepal_width,petal_length,petal_width,class 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setosa 4.6,3.1,1.5,0.2,Iris-setosa 5,3.6,1.4,0.2,Iris-setosa 5.4,3.9,1.7,0.4,Iris-setosa 4.6,3.4,1.4,0.3,Iris-setosa 5,3.4,1.5,0.2,Iris-setosa 4.4,2.9,1.4,0.2,Iris-setosa 4.9,3.1,1.5,0.1,Iris-setosa 5.4,3.7,1.5,0.2,Iris-setosa 4.8,3.4,1.6,0.2,Iris-setosa 4.8,3,1.4,0.1,Iris-setosa 4.3,3,1.1,0.1,Iris-setosa 5.8,4,1.2,0.2,Iris-setosa 5.7,4.4,1.5,0.4,Iris-setosa 5.4,3.9,1.3,0.4,Iris-setosa 7,3.2,4.7,1.4,Iris-versicolor 6.4,3.2,4.5,1.5,Iris-versicolor 6.9,3.1,4.9,1.5,Iris-versicolor 5.5,2.3,4,1.3,Iris-versicolor 6.5,2.8,4.6,1.5,Iris-versicolor 5.7,2.8,4.5,1.3,Iris-versicolor 6.3,3.3,4.7,1.6,Iris-versicolor 4.9,2.4,3.3,1,Iris-versicolor 6.6,2.9,4.6,1.3,Iris-versicolor 5.2,2.7,3.9,1.4,Iris-versicolor 5,2,3.5,1,Iris-versicolor 5.9,3,4.2,1.5,Iris-versicolor 6,2.2,4,1,Iris-versicolor 6.1,2.9,4.7,1.4,Iris-versicolor 5.6,2.9,3.6,1.3,Iris-versicolor 6.7,3.1,4.4,1.4,Iris-versicolor 5.6,3,4.5,1.5,Iris-versicolor 5.8,2.7,4.1,1,Iris-versicolor 6.2,2.2,4.5,1.5,Iris-versicolor 5.6,2.5,3.9,1.1,Iris-versicolor 5.9,3.2,4.8,1.8,Iris-versicolor 6.1,2.8,4,1.3,Iris-versicolor 6.3,2.5,4.9,1.5,Iris-versicolor 6.1,2.8,4.7,1.2,Iris-versicolor 6.4,2.9,4.3,1.3,Iris-versicolor 6.6,3,4.4,1.4,Iris-versicolor 6.8,2.8,4.8,1.4,Iris-versicolor 6.2,2.8,4.8,1.8,Iris-virginica 6.1,3,4.9,1.8,Iris-virginica 6.4,2.8,5.6,2.1,Iris-virginica 7.2,3,5.8,1.6,Iris-virginica 7.4,2.8,6.1,1.9,Iris-virginica 7.9,3.8,6.4,2,Iris-virginica 6.4,2.8,5.6,2.2,Iris-virginica 6.3,2.8,5.1,1.5,Iris-virginica 6.1,2.6,5.6,1.4,Iris-virginica 7.7,3,6.1,2.3,Iris-virginica 6.3,3.4,5.6,2.4,Iris-virginica 6.4,3.1,5.5,1.8,Iris-virginica 6,3,4.8,1.8,Iris-virginica 6.9,3.1,5.4,2.1,Iris-virginica 6.7,3.1,5.6,2.4,Iris-virginica 6.9,3.1,5.1,2.3,Iris-virginica 5.8,2.7,5.1,1.9,Iris-virginica 6.8,3.2,5.9,2.3,Iris-virginica 6.7,3.3,5.7,2.5,Iris-virginica 6.7,3,5.2,2.3,Iris-virginica 6.3,2.5,5,1.9,Iris-virginica 6.5,3,5.2,2,Iris-virginica 6.2,3.4,5.4,2.3,Iris-virginica 5.9,3,5.1,1.8,Iris-virginica 准备模型文件/初始权重(作业发起方) 作业发起方需要提供模型、初始权重(非必须),上传到Agent1的挂载目录下并使用命令chown -R 1000:1000 /tmp/tics1/修改挂载目录下的文件的属主和组。 使用python代码创建模型文件,保存为二进制文件model.h5,以鸢尾花为例,生成如下的模型: import tensorflow as tf import keras model = keras.Sequential([ keras.layers.Dense(4, activation=tf.nn.relu, input_shape=(4,)), keras.layers.Dense(6, activation=tf.nn.relu), keras.layers.Dense(3, activation='softmax') ]) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.save("d:/model.h5") 初始权重的格式是浮点数的数组,与模型对应。使用联邦学习训练出来的结果result_1可以作为初始权重,样例如下: -0.23300957679748535,0.7804553508758545,0.0064492723904550076,0.5866460800170898,0.676144003868103,-0.7883696556091309,0.5472091436386108,-0.20961782336235046,0.58524489402771,-0.5079598426818848,-0.47474920749664307,-0.3519996106624603,-0.10822880268096924,-0.5457949042320251,-0.28117161989212036,-0.7369481325149536,-0.04728877171874046,0.003856887575238943,0.051739662885665894,0.033792052417993546,-0.31878742575645447,0.7511205673217773,0.3158722519874573,-0.7290999293327332,0.7187696695327759,0.09846954792737961,-0.06735057383775711,0.7165604829788208,-0.730293869972229,0.4473201036453247,-0.27151209115982056,-0.6971480846405029,0.7360773086547852,0.819558322429657,0.4984433054924011,0.05300116539001465,-0.6597640514373779,0.7849202156066895,0.6896201372146606,0.11731931567192078,-0.5380218029022217,0.18895208835601807,-0.18693888187408447,0.357051283121109,0.05440644919872284,0.042556408792734146,-0.04341210797429085,0.0,-0.04367709159851074,-0.031455427408218384,0.24731603264808655,-0.062861368060112,-0.4265706539154053,0.32981523871421814,-0.021271884441375732,0.15228557586669922,0.1818728893995285,0.4162319302558899,-0.22432318329811096,0.7156463861465454,-0.13709741830825806,0.7237883806228638,-0.5489991903305054,0.47034209966659546,-0.04692812263965607,0.7690137028694153,0.40263476967811584,-0.4405142068862915,0.016018997877836227,-0.04845477640628815,0.037553105503320694 编写训练脚本(作业发起方) 作业发起方还需要编写联邦学习训练脚本,其中需要用户自行实现读取数据、训练模型、评估模型、获取评估指标的逻辑。计算节点会将数据集配置文件中的path属性作为参数传递给训练脚本。 JobParam属性如下: class JobParam: """训练脚本参数 """ # 作业id job_id = '' # 当前轮数 round = 0 # 迭代次数 epoch = 0 # 模型文件路径 model_file = '' # 数据集路径 dataset_path = '' # 是否仅做评估 eval_only = False # 权重文件 weights_file = '' # 输出路径 output = '' # 其他参数json字符串 param = '' 鸢尾花的训练脚本iris_train.py样例如下: # -*- coding: utf-8 -*- import getopt import sys import keras import horizontal.horizontallearning as hl def train(): # 解析命令行输入 jobParam = JobParam() jobParam.parse_from_command_line() job_type = 'evaluation' if jobParam.eval_only else 'training' print(f"Starting round {jobParam.round} {job_type}") # 加载模型,设置初始权重参数 model = keras.models.load_model(jobParam.model_file) hl.set_model_weights(model, jobParam.weights_file) # 加载数据、训练、评估 -- 用户自己实现 print(f"Load data {jobParam.dataset_path}") train_x, test_x, train_y, test_y, class_dict = load_data(jobParam.dataset_path) if not jobParam.eval_only: b_size = 1 model.fit(train_x, train_y, batch_size=b_size, epochs=jobParam.epoch, shuffle=True, verbose=1) print(f"Training job [{jobParam.job_id}] finished") eval = model.evaluate(test_x, test_y, verbose=0) print("Evaluation on test data: loss = %0.6f accuracy = %0.2f%% \n" % (eval[0], eval[1] * 100)) # 结果以json格式保存 -- 用户读取评估指标 result = {} result['loss'] = eval[0] result['accuracy'] = eval[1] # 生成结果文件 hl.save_train_result(jobParam, model, result) # 读取CSV数据集,并拆分为训练集和测试集 # 该函数的传入参数为CSV_FILE_PATH: csv文件路径 def load_data(CSV_FILE_PATH): import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import LabelBinarizer # 读取目录数据集,读取目录下所有CSV文件 if os.path.isdir(CSV_FILE_PATH): print(f'read file folder [{CSV_FILE_PATH}]') all_csv_path = glob.glob(os.path.join(CSV_FILE_PATH, '*.csv')) all_csv_path.sort() csv_list = [] for csv_path in all_csv_path: csv_list.append(pd.read_csv(csv_path)) IRIS = pd.concat(csv_list) # 读取CSV文件 else: IRIS = pd.read_csv(CSV_FILE_PATH) target_var = 'class' # 目标变量 # 数据集的特征 features = list(IRIS.columns) features.remove(target_var) # 目标变量的类别 Class = IRIS[target_var].unique() # 目标变量的类别字典 Class_dict = dict(zip(Class, range(len(Class)))) # 增加一列target, 将目标变量进行编码 IRIS['target'] = IRIS[target_var].apply(lambda x: Class_dict[x]) # 对目标变量进行0-1编码(One-hot Encoding) lb = LabelBinarizer() lb.fit(list(Class_dict.values())) transformed_labels = lb.transform(IRIS['target']) y_bin_labels = [] # 对多分类进行0-1编码的变量 for i in range(transformed_labels.shape[1]): y_bin_labels.append('y' + str(i)) IRIS['y' + str(i)] = transformed_labels[:, i] # 将数据集分为训练集和测试集 train_x, test_x, train_y, test_y = train_test_split(IRIS[features], IRIS[y_bin_labels], train_size=0.7, test_size=0.3, random_state=0) return train_x, test_x, train_y, test_y, Class_dict class JobParam: """训练脚本参数 """ # required parameters job_id = '' round = 0 epoch = 0 model_file = '' dataset_path = '' eval_only = False # optional parameters weights_file = '' output = '' param = '' def parse_from_command_line(self): """从命令行中解析作业参数 """ opts, args = getopt.getopt(sys.argv[1:], 'hn:w:', ['round=', 'epoch=', 'model_file=', 'eval_only', 'dataset_path=', 'weights_file=', 'output=', 'param=', 'job_id=']) for key, value in opts: if key in ['--round']: self.round = int(value) if key in ['--epoch']: self.epoch = int(value) if key in ['--model_file']: self.model_file = value if key in ['--eval_only']: self.eval_only = True if key in ['--dataset_path']: self.dataset_path = value if key in ['--weights_file']: self.weights_file = value if key in ['--output']: self.output = value if key in ['--param']: self.param = value if key in ['--job_id']: self.job_id = value if __name__ == '__main__': train()
  • 管理工作空间配额 工作空间创建成功后,可以查看配额信息或修改配额值。 在ModelArts管理控制台的左侧导航栏中,选择“工作空间”进入工作空间列表。 在工作空间列表,单击操作列的“配额管理”进入工作空间详情页。 在配额信息页面可以查看工作空间设置的配额值、已用的配额、最后修改时间等配额信息。 单击配额信息右侧的“修改配额”可以修改配额值。配置值的配置说明请参见表2。 表2 配额信息 配额名称 配额值说明 单位 自动学习(预测分析)训练时长 默认无限制,支持设置1~60000。 分钟 自动学习(图像分类、物体检测、声音分类)训练时长 默认无限制,支持设置1~60000。 分钟 训练作业GPU规格训练时长(单张Pnt1单节点为统计基础单元) 默认无限制,支持设置1~60000。 分钟 训练作业CPU规格训练时长(单核单节点为统计基础单元) 默认无限制,支持设置1~60000。 分钟 可视化作业使用时长 默认无限制,支持设置1~60000。 分钟 开发环境CPU规格使用时长(单核为统计基础单元) 默认无限制,支持设置1~60000。 分钟 开发环境GPU规格使用时长(单张Pnt1为统计基础单元) 默认无限制,支持设置1~60000。 分钟 推理服务CPU规格使用时长(单节点为统计基础单元) 默认无限制,支持设置1~60000。 分钟 推理服务GPU规格使用时长(单节点为统计基础单元) 默认无限制,支持设置1~60000。 分钟 训练作业CPU规格训练核数 默认无限制,支持设置1~10000。 核 训练作业GPU规格训练卡数 默认无限制,支持设置1~1000。 卡 训练作业RAM规格训练内存大小 默认无限制,支持设置1~100000。 GB 智能标注GPU规格使用时长 默认无限制,支持设置1~60000。 分钟 工作空间的配额值修改完成后,单击“提交修改”,当“配额值”数据刷新表示修改成功。
  • 删除工作空间 当不需要使用工作空间时,支持删除工作空间。工作空间删除后会默认清理该工作空间下所有资源。其中,默认工作空间“default”不支持删除。 删除操作无法恢复,请谨慎操作。 在ModelArts管理控制台的左侧导航栏中,选择“工作空间”进入工作空间列表。 在工作空间列表,单击操作列的“删除”,在删除工作空间弹窗中确认待删除的工作空间信息以及该工作空间下将被一起删除的资源,确认无误后,输入“DELETE”,单击“确定”,工作空间的状态变为“删除中”,待资源清理完成,该工作空间会从列表删除。
  • 背景信息 ModelArts的用户需要为不同的业务目标开发算法、管理和部署模型,此时可以创建多个工作空间,把不同应用开发过程的输出内容划分到不同工作空间中,便于管理和使用。 基于工作空间可以实现资源逻辑隔离、资源配额管理、细粒度鉴权和资源清理能力。工作空间组件可以将ModelArts各类资源整合,以工作空间体现给企业项目管理服务。 工作空间支持3种访问控制: PUBLIC:租户(主账号和所有子账号)内部公开访问。 PRIVATE:仅创建者和主账号可访问。 INTERNAL:创建者、主账号、指定IAM子账号可访问当授权类型为INTERNAL时需要指定可访问的子账号的账号名,可选择多个。 每个账号每个IAM项目都会分配1个默认工作空间,默认工作空间的访问控制为PUBLIC。 通过工作空间的访问控制能力,可限制仅允许部分人访问对应的工作空间。通过此功能可实现类似如下场景: 教育场景:老师可给每个学生分配1个INTERNAL的工作空间并且限制该工作空间被指定学生访问,这样可使得学生可独立完成在ModelArts上的实验。 企业场景:管理者可创建用于生产任务的工作空间并限制仅让运维人员使用,用于日常调试的工作空间并限制仅让开发人员使用。通过这种方式让不同的企业角色只能在指定工作空间下使用资源。
  • 创建工作空间 登录ModelArts管理控制台。 在左侧导航栏中,选择“工作空间”进入工作空间列表。 单击“创建工作空间”,进入创建页面。 表1 创建工作空间 参数名称 说明 工作空间名称 必填,工作空间的名称。 支持4~64位可见字符,名称可以包含字母、中文、数字、中划线(-)或下划线(_)。 描述 工作空间的简介。支持0~256位字符。 企业项目 必填,选择绑定的企业项目。当没有合适的企业项目时,可以单击“新建企业项目”跳转到企业项目管理页面,创建新的企业项目再绑定。 企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。 授权类型 必填,选择工作空间的访问权限。 “PUBLIC”:租户(主账号和所有子账号)内部公开访问。 “PRIVATE”:仅创建者和主账号可访问。 “INTERNAL”:创建者、主账号、指定的子账号可访问。当授权类型为INTERNAL时,需要配置“授权对象类型”和“授权对象”指定可访问的子账号。 当“授权对象类型”选择“IAM子用户”时,“授权对象”选择指定的IAM子用户,可选择多个。 当“授权对象类型”选择“联邦用户”时,“授权对象”输入联邦用户的用户名或用户ID,支持配置多个。 当“授权对象类型”选择“委托用户”时,“授权对象”选择委托名称,可选择多个。 工作空间参数配置完成后,单击“立即创建”完成创建任务。
  • 操作步骤 登录华为云管理控制台,鼠标指向页面右上角的用户名,在下拉列表中单击“我的凭证”。 图1 我的凭证入口 在“我的凭证”页面中选择“访问密钥”页签。单击“新增访问密钥”,按操作指引获取认证账号的AK/SK,请妥善保管AK/SK信息。 图2 访问密钥 每个用户仅允许新增两个访问密钥。 为保证访问密钥的安全,访问密钥仅在初次生成时自动下载,后续不可再次通过管理控制台页面获取。请在生成后妥善保管。