华为云用户手册

  • 响应示例 { "resCode": "0", "resMsg": "成功", "result": [ { "boID": null, "catalogue": "Out", "createdBy": "testUserId", "createdBy.__objectType": "User", "createdBy.name": "test0xx", "createdDate": "2019-08-04 16:21:58", "custom": true, "description": "Updated Description", "id": "000y000000aM8XixTN0S", "installedPackage": null, "lastModifiedBy": "testUserId", "lastModifiedBy.__objectType": "User", "lastModifiedBy.name": "test0xx", "lastModifiedDate": "2019-08-04 16:22:58", "name": "testName", "namespace": "testSpace", "owner": "testUserId", "owner.__objectType": "User", "owner.name": "test0xx", "protectMode": 0, "structMembers": [ { "createdBy": "testUserId", "createdBy.__objectType": "User", "createdBy.name": "test0xx", "createdDate": "2019-08-04 16:21:58", "currencyFactor": 1, "custom": true, "dataType": "text", "defaultValue": null, "defaultValueType": null, "description": null, "id": "000y000000bM2XixVA0P", "ignoreNull": true, "installedPackage": null, "isCollection": true, "isNested": false, "lastModifiedBy": "testUserId", "lastModifiedBy.__objectType": "User", "lastModifiedBy.name": "test0xx", "lastModifiedDate": "2019-08-04 16:21:58", "name": "testName", "namespace": null, "owner": "testUserId", "owner.__objectType": "User", "owner.name": "test0xx", "parent": "testId", "parent.__objectType": "ExtStruct", "parent.name": "TestName", "picklistValues": null, "protectMode": 0, "required": true, "structType": null } ] } ] }
  • 响应参数 表2 响应参数 参数 参数类型 描述 resCode String 参数解释: 返回码。 取值范围: 如果返回“0”代表请求成功,其他错误码说明请参考错误码。 resMsg String 参数解释: 返回消息。 取值范围: 如果成功状态,通常会返回“Success”,其他情况会返回具体的错误信息。 result String 参数解释: 创建成功的记录ID,成功时返回。 取值范围: 不涉及。
  • 响应示例 { "resCode": "0", "resMsg": "成功", "result": [ { "active": false, "config": "{\"cancelable\":false,\"noCancelAfterElem\":\"\",\"noCancelAfterElemLabel\":\"\"}", "description": "", "id": "001L000000Peuw1Q318a", "label": "SimpleBP", "name": "SimpleBP", "status": "Warning", "version": "1.0.1" } ] }
  • 响应示例 { "resCode": "0", "resMsg": "成功", "result": { "createdBy": "10gd000000QwWjXspAOW", "createdBy.__objectType": "User", "createdBy.name": "bingo", "createdDate": "2021-05-19 11:41:30", "curElement": "isMasterAccountByIdentityId", "description": "", "endTime": "", "id": "002N000000jrOCerKZBQ", "label": "isMasterAccount 2021-05-19 11:41:30", "lastHandler": null, "lastModifiedBy": "10gd000000QwWjXspAOW", "lastModifiedBy.__objectType": "User", "lastModifiedBy.name": "bingo", "lastModifiedDate": "2021-05-19 11:41:30", "name": "CP_DS__isMasterAccountForOperator", "owner": "10gd000000QwWjXspAOW", "owner.__objectType": "User", "owner.name": "bingo", "rootID": "", "runMode": 2, "startTime": "2021-05-19 11:41:30", "state": "Broken", "suspended": false, "type": "Flow", "type.name": "Flow", "version": "1.0.1" } }
  • URI GET AstroZero 域名 /u-route/baas/v1.0/flow/{action} 表1 参数说明 参数 是否必选 参数类型 描述 action 是 String 参数解释: 需要查询的服务编排状态或者根据id查询服务编排信息。 约束限制: 不涉及。 取值范围: 各个状态取值及其含义如下: activeFlow:正在执行的服务编排。 suspendedFlow:延时的服务编排。 terminatedFlow:被终止的服务编排。 completedFlow:正常完成的服务编排。 instanceId:根据id查询服务编排信息,请求时该参数需替换为具体的服务编排运行实例ID。 默认取值: 不涉及 owner 否 String 参数解释: 所属账号ID。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 creater 否 String 参数解释: 创建者ID。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 fields 否 Array 参数解释: 字符串数组,为需要查询的字段,不传则默认。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 orderField 否 String 参数解释: 用于排序的字段,需要在fields中。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 orderType 否 String 参数解释: 排序方式。 约束限制: 不涉及。 取值范围: 0:代表Asc升序。 1:代表Desc降序。 默认取值: 不涉及。 limit 否 Integer 参数解释: 数据条数限制。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 offset 否 Integer 参数解释: 数据起始位置。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。
  • 响应参数 表2 响应参数 参数 参数类型 描述 resCode String 参数解释: 返回码。 取值范围: 如果返回“0”代表请求成功,其他错误码说明请参考错误码。 resMsg String 参数解释: 返回消息。 取值范围: 如果成功状态,通常会返回“Success”,其他情况会返回具体的错误信息。 result Object 参数解释: 在成功请求时会有内容返回。内部包含请求中传入的fields中的字段或默认字段。
  • 响应示例 { "resCode": "0", "resMsg": "成功", "result": { "belongTo": "", "content": { "name": "", "type": "", "view": { "fields": [ "name", "Test__xxx__ CS T", "Test__Field1__CST", "Test__Field11__CST", "Test__Field3__CST" ], "name": "__layout__Test__t1__CST__detail" } }, "createdBy": "10gd000001DHHEwmE1NQ", "createdBy.name": "test00xx", "createdDate": "2024-06-06 16:19:07", "custom": true, "description": "Object detail layout", "events": [], "id": "000D000001Dgez2PYjS4", "isBaseline": false, "label": "t1 Detail", "lastModifiedBy": "10gd000001DHHEwmE1NQ", "lastModifiedBy.name": "test00xx", "lastModifiedDate": "2024-06-07 11:05:50", "name": "t1 Detail", "objectId": "cust000001Dgez2L19N2", "owner": "10gd000001DHHEwmE1NQ", "owner.name": "test00xx", "params": [], "protectMode": 0, "type": "ObjectDetailLayout", "visibility": 0 } }
  • URI GET AstroZero域名/u-route/baas/metadata/v1.0/object/{object_id}/Layout/{layout_id} 表1 路径参数 参数 是否必选 参数类型 描述 object_Id 是 String 参数解释: 对象的ID值,可通过调用查询所有自定义对象接口查看(响应消息中的“id”)。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 layout_id 是 String 参数解释: Layout的ID值,可通过调用5.2.3.9-根据object_id查询layout接口查看(响应消息中的“id”)。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。
  • 响应示例 { "resCode": "0", "resMsg": "成功", "result": { "config": { "cancelable": false, "noCancelAfterElem": "" }, "dataMappers": [ { "assignmentItems": [ { "assignTo": "dateList", "name": "", "operator": "add", "value": "2019-03-04", "valueType": "" }, { "assignTo": "dateList", "name": "", "operator": "add", "value": "2020-01-02", "valueType": "" } ], "connector": "userTask", "connectorPoint": "{\"fromPort\":\"R1\",\"toPort\":\"L1\",\"points\":[\"619 125\",\"643 125\",\"662.5 125\",\"662.5 100\",\"682 100\",\"706 100\"]}", "connectors": [ ], "description": "", "label": "Data Mapper", "locationX": 575, "locationY": 125, "name": "dataMapper" } ], "description": "", "id": "001L000000Peuw1Q318a", "label": "SimpleBP", "laneSet": { "label": "", "lanes": [ { "elements": [ "userTask", "userTask1", "dataMapper", "start" ], "height": 201.35220031738282, "label": "lane", "name": "lane", "role": "LoanRequest.Applicant", "width": 1080 } ], "name": "" }, "name": "SimpleBP", "slas": [ { "actions": [ ], "active": true, "criteria": "", "deadlineDays": 0, "deadlineHours": 0, "deadlineIncreaseUrgencyBy": 2, "deadlineMinutes": 0, "deadlineOnlyBusinessDays": false, "goalActions": [ { "action": "", "criteria": "{!IsMatched} && {!Owner}", "name": "sla-act", "type": "Notify Manager" } ], "goalDays": 0, "goalHours": 0, "goalIncreaseUrgencyBy": 1, "goalMinutes": 0, "goalOnlyBusinessDays": false, "label": "userTask1_sla", "name": "userTask1_sla", "startWhen": "", "variable": "" }, { "actions": [ ], "active": true, "criteria": "", "deadlineDays": 0, "deadlineHours": 0, "deadlineIncreaseUrgencyBy": 2, "deadlineMinutes": 0, "deadlineOnlyBusinessDays": false, "goalActions": [ { "action": "NotifyBPManager", "criteria": "", "name": "sla-act1", "type": "Notify Manager" } ], "goalDays": 1, "goalHours": 0, "goalIncreaseUrgencyBy": 1, "goalMinutes": 0, "goalOnlyBusinessDays": false, "label": "userTask_sla", "name": "userTask_sla", "startWhen": "", "variable": "" } ], "startEvents": [ { "connector": "dataMapper", "connectorPoint": "{\"fromPort\":\"R1\",\"toPort\":\"L0\",\"points\":[\"151.5 100\",\"175.5 100\",\"341.25 100\",\"341.25 110.5\",\"507 110.5\",\"531 110.5\"]}", "description": "", "document": "", "label": "Start", "locationX": 125, "locationY": 100, "name": "start", "render": "", "renderType": "", "startType": "", "type": "Start" } ], "startStage": null, "startType": "", "status": "Warning", "status.name": "Warning", "userTasks": [ { "approvalType": "Single", "boundaryEvents": [ ], "connector": "userTask1", "connectorPoint": "{\"fromPort\":\"R1\",\"toPort\":\"L1\",\"points\":[\"794 100\",\"818 100\",\"875 100\",\"875 100\",\"932 100\",\"956 100\"]}", "description": "wuli desc", "document": "", "faultConnector": "", "groupAsSingleParticipant": false, "inputAssignments": [ { "input": "$Task.Title", "name": "", "value": "{!$GlobalConstant.EmptyString}", "valueType": "" } ], "label": "User Task", "locationX": 750, "locationY": 100, "name": "userTask", "outputAssignments": [ ], "participants": [ { "type": "user", "value": "ecommerce6" } ], "preActions": [ { "action": "{!$GlobalConstant.EmptyString}", "criteria": "", "name": "action", "type": "Set Status" } ], "priority": 3, "render": "SimpleBP$Form1$form", "renderType": "Form", "routeTo": "", "routeType": "Name and Expressions", "router": { "defaultRouteTo": "", "defaultRouteType": "", "name": "" }, "title": "wu li tu cao", "usingSLA": "userTask_sla" }, { "approvalType": "Single", "boundaryEvents": [ ], "connector": "", "description": "", "document": "", "faultConnector": "", "groupAsSingleParticipant": false, "inputAssignments": [ ], "label": "User Task", "locationX": 1000, "locationY": 100, "name": "userTask1", "outputAssignments": [ ], "priority": 3, "render": "SimpleBP$ut1$form", "renderType": "Form", "routeTo": "", "routeType": "Last Assignee In Lane", "router": { "defaultRouteTo": "", "defaultRouteType": "", "name": "" }, "title": "T2" } ], "usingSLA": "", "variables": [ { "currencyFactor": 0, "dataType": "checkBox", "defaultValue": "{!$GlobalConstant.True}", "defaultValueType": "", "description": "", "extNS": "", "extType": "", "isCollection": false, "isInput": false, "isNested": false, "isOutput": false, "name": "IsMatched" }, { "currencyFactor": 0, "dataType": "text", "defaultValue": "Hello", "defaultValueType": "", "description": "", "extNS": "", "extType": "", "isCollection": false, "isInput": false, "isNested": false, "isOutput": false, "name": "Owner" }, { "currencyFactor": 0, "dataType": "date", "defaultValue": "", "defaultValueType": "", "description": "", "extNS": "", "extType": "", "isCollection": false, "isInput": false, "isNested": false, "isOutput": false, "name": "dateVar" }, { "currencyFactor": 0, "dataType": "date", "defaultValue": "", "defaultValueType": "", "description": "", "extNS": "", "extType": "", "isCollection": true, "isInput": false, "isNested": false, "isOutput": false, "name": "dateList" }, { "currencyFactor": 0, "dataType": "extStruct", "defaultValue": "", "defaultValueType": "", "description": "", "extNS": "SimpleBP", "extType": "Form1Form", "isCollection": false, "isInput": false, "isNested": false, "isOutput": false, "name": "Form1Form" } ], "version": "1.0.1" } }
  • 响应参数 表1 响应参数 参数 参数类型 描述 resCode String 参数解释: 返回码。 取值范围: 如果返回“0”代表请求成功,其他错误码说明请参考错误码。 resMsg String 参数解释: 返回消息。 取值范围: 如果成功状态,通常会返回“Success”,其他情况会返回具体的错误信息。 result Array 参数解释: 成功返回会返回所有标准页面信息,以一个列表展示,每个值是一个标准页面。
  • 响应示例 { "resCode": "0", "resMsg": "成功", "result": [{ "belongTo": null, "bpId": null, "createdBy": "10gd000001DHHEwmE1NQ", "createdBy.__objectType": "User", "createdBy.name": "test00xx", "createdDate": "2024-06-13 10:11:07", "custom": true, "description": "home tab", "id": "001g0000000000000000", "installedPackage": null, "kanbanId": null, "label": "Home", "lastModifiedBy": "10gd000001DHHEwmE1NQ", "lastModifiedBy.__objectType": "User", "lastModifiedBy.name": "test00xx", "lastModifiedDate": "2024-06-13 10:11:07", "layoutId": null, "logo": "home.logo", "name": "Home", "objectId": "", "openWay": 0, "owner": "10gd000001DHHEwmE1NQ", "owner.__objectType": "User", "owner.name": "test00xx", "pageId": null, "properties": "", "protectMode": 0, "reportId": null, "showDeviceType": null, "showRegion": 0, "type": "PortalTab", "type.name": "PortalTab", "visibility": null, "webURL": null, "websiteId": null }, { "belongTo": null, "bpId": null, "createdBy": "10gd000001DHHEwmE1NQ", "createdBy.__objectType": "User", "createdBy.name": "test00xx", "createdDate": "2024-06-12 17:12:34", "custom": true, "description": null, "id": "001g000001DqgE2h6vUO", "installedPackage": null, "kanbanId": null, "label": "管理t134", "lastModifiedBy": "10gd000001DHHEwmE1NQ", "lastModifiedBy.__objectType": "User", "lastModifiedBy.name": "test00xx", "lastModifiedDate": "2024-06-12 17:12:34", "layoutId": null, "logo": "menuicon icon-app", "name": "Test__asda_t1", "objectId": null, "openWay": 0, "owner": "10gd000001DHHEwmE1NQ", "owner.__objectType": "User", "owner.name": "test00xx", "pageId": null, "properties": null, "protectMode": 0, "reportId": null, "showDeviceType": "0", "showRegion": 0, "type": "ViewTab", "type.name": "ViewTab", "visibility": 0, "webURL": "Test__Managet1", "websiteId": null }, { "belongTo": null, "bpId": null, "createdBy": "10gd000001DHHEwmE1NQ", "createdBy.__objectType": "User", "createdBy.name": "test00xx", "createdDate": "2024-06-13 10:05:50", "custom": true, "description": null, "id": "001g000001DrqdSfgNXc", "installedPackage": null, "kanbanId": null, "label": "管理t1342", "lastModifiedBy": "10gd000001DHHEwmE1NQ", "lastModifiedBy.__objectType": "User", "lastModifiedBy.name": "test00xx", "lastModifiedDate": "2024-06-13 10:05:50", "layoutId": null, "logo": "menuicon icon-app", "name": "Test__asda_t11", "objectId": null, "openWay": 0, "owner": "10gd000001DHHEwmE1NQ", "owner.__objectType": "User", "owner.name": "test00xx", "pageId": null, "properties": null, "protectMode": 0, "reportId": null, "showDeviceType": "0", "showRegion": 0, "type": "ViewTab", "type.name": "ViewTab", "visibility": 0, "webURL": "Test__Managet12", "websiteId": null } ] }
  • 请求参数 表2 请求参数 参数 是否必选 参数类型 描述 flag 否 String 参数解释: 服务编排的查询模式。 约束限制: 不涉及。 取值范围: 分为如下四种情况: 不带flag,按Flow_id查询服务编排。 带flag= check,按Flow_id检查服务编排信息。 带flag=Describe,按flow_id查询单个服务编排的入参出参信息。 带flag= dep,按flow_id查询单个服务编排所依赖的对象。 默认取值: 不涉及。
  • 响应示例 { "resCode": "0", "resMsg": "成功", "result": { "active": false, "catalogue": "", "compilerVersion": 0, "createdBy": "testUserId", "createdBy.__objectType": "User", "createdBy.name": "test0xx", "createdDate": "2019-08-03 18:19:13", "custom": true, "description": "", "event": "", "eventCriteria": "", "id": "testId", "installedPackage": null, "interviewLabel": "", "label": "A Brand New Label", "lastModifiedBy": "testUserId", "lastModifiedBy.__objectType": "User", "lastModifiedBy.name": "test0xx", "lastModifiedDate": "2019-08-04 17:57:29", "localUrl": "", "lockUser": "", "name": "testName", "owner": "testUserId", "owner.__objectType": "User", "owner.name": "test0xx", "private": false, "processType": "", "protectMode": 0, "reserved": 0, "startElement": "", "status": "Error", "usingSLA": null, "version": "1.0.1" } }
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 表2 HTTP方法 方法 说明 GET 请求服务器返回指定资源,如获取对象列表。 PUT 请求服务器更新指定资源,如按记录ID更新数据。 POST 请求服务器新增资源或执行特殊操作,如新增对象数据。 DELETE 请求服务器删除指定资源,如按记录ID列表删除对象数据。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。当资源不存在的时候,PATCH可能会去创建一个新的资源。 在使用OAuth 2.0的客户端鉴权模式,获取用户access_token的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://appcube.cn-north-4.huaweicloud.com/baas/auth/v1.0/oauth2/token
  • 发起请求 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。 对于使用OAuth 2.0的客户端鉴权模式,获取的用户access_token接口。返回的响应消息中,“access_token”就是需要获取的用户access_token。有了access_token之后,就可以使用access_token调用AstroZero的其他API。
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 详细的公共请求消息头字段请参见表3。 表3 公共请求消息头 消息头名称 描述 是否必选 Content-Type HTTP协议中设定的一个参数,用于标识返回的内容用什么格式去解析。 配置为“application/json”。表示浏览器将返回内容解析为json对象。 配置为“application/x-www-form-urlencoded”,表示urlencode格式。 是 tenant-id 账号的标识,不能重复,用于定义哪个账号接收请求。 否 access-token access-token是调用AstroZero接口API要用到的访问令牌,在调用API的时候将access-token加到请求消息头,从而通过身份认证,获得操作API的权限。 当AstroZero的用户和业务用户通过账号密码登录AstroZero后,后台会生成一个访问令牌,在响应消息中携带,并存在浏览器中。下次再调用请求后,会带上这个访问令牌,表示这个用户已经被鉴权过。当第三方系统要访问AstroZero的业务接口时,需要提前使用OAuth协议进行接入认证,获取客户端鉴权ID(Client ID)和客户端鉴权密钥(Client Secret),再使用客户端鉴权ID和客户端鉴权密钥调用接口“/baas/auth/v1.0/oauth2/token”获取access_token,从而获取AstroZero业务接口的访问令牌。 否 使用access-token认证时该字段必选。 对于使用OAuth 2.0的客户端鉴权模式,获取用户access_token接口,由于不需要access-token认证,所以只添加“Content-Type”为“application/x-www-form-urlencoded”即可,添加消息头后的请求如下所示。 POST https://appcube.cn-north-4.huaweicloud.com/baas/auth/v1.0/oauth2/token Content-Type: application/x-www-form-urlencoded
  • 请求URI 请求URI由如下部分组成: {URI-scheme} :// {Endpoint} / {resource-path} ? {query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 表1 URI中的参数说明 参数 说明 URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 指定承载REST服务端点的AstroZero服务器域名或IP。 例如,AstroZero开发环境服务器在“华北-北京四”区域的Endpoint为“appcube.cn-north-4.huaweicloud.com”。 resource-path 资源路径,即API访问路径。从具体API的URI模块获取,例如“获取用户Token”API的resource-path为“/baas/auth/v1.0/oauth2/token”。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询不超过10条数据。多个查询参数之间使用“&”隔开。 例如,使用OAuth 2.0协议的客户端鉴权模式,获取用户access_token,“/baas/auth/v1.0/oauth2/token”为资源路径,假设AstroZero服务开发态域名为“appcube.cn-north-4.huaweicloud.com”,URI拼接起来如下所示。 https://appcube.cn-north-4.huaweicloud.com/baas/auth/v1.0/oauth2/token
  • 响应示例 { "resCode": "0", "resMsg": "成功", "result": { "active": true, "apiVersion": null, "belongTo": null, "createdBy": "10gd000001DHHEwmE1NQ", "createdBy.__objectType": "User", "createdBy.name": "hw065922111", "createdDate": "2024-06-11 11:27:02", "custom": true, "description": null, "event": "BeforeInsert", "event.name": "BeforeInsert", "id": "001i000001Docd70WYZU", "installedPackage": null, "jscode": "Hello, world;rn", "label": "Trigger 01", "lastModifiedBy": "10gd000001DHHEwmE1NQ", "lastModifiedBy.__objectType": "User", "lastModifiedBy.name": "hw065922111", "lastModifiedDate": "2024-06-11 11:27:02", "name": "Trigger_01", "objectId": "cust000001Dgez2L19N2", "objectId.__objectType": "Object", "objectId.name": "HW_00644562__t1__CST", "owner": "10gd000001DHHEwmE1NQ", "owner.__objectType": "User", "owner.name": "hw065922111", "protectMode": 0, "script": "string", "sourceMap": null, "visibility": 0 } }
  • URI GET AstroZero域名/u-route/baas/metadata/v1.0/object/{object_id}/Trigger/{trigger_id} 表1 路径参数 参数 是否必选 参数类型 描述 object_Id 是 String 参数解释: 对象的ID值,可通过调用查询所有自定义对象接口查看(响应消息中的“id”)。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 trigger_id 是 String 参数解释: Trigger的ID值,可通过调用5.2.3.13-根据object_id查询trigger接口查看(响应消息中的“id”)。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。
  • Astro企业应用(即将上线) Astro企业应用(Astro Pro)是Astro面向企业数字化转型提供的元数据管理解决方案,为企业SaaS应用提供端到端开发管理平台,沉淀通用能力,加快应用构建,差异场景灵活扩展,助力业务创新。Astro Pro通过元数据多租,高低代码协同等能力快速构建企业核心业务应用,提高多层级/多分支企业的应用构建效率。 AstroFlow作为Astro企业应用的基础版本,为企业数字化提供基本的元数据基础表单、流程服务。
  • Astro大屏应用 Astro大屏应用(Astro Canvas)是华为云Astro低代码平台提供的可视化页面构建服务,提供了丰富的可视化组件、灵活的数据接入和多种方式页面构建能力,支持多屏适配,帮助开发者快速构建和发布专业水准的实时可视化应用。 AstroFlow可为Astro Canvas提供基本的数据表单和流程设置,便于Astro Canvas大屏应用以AstroFlow中的应用数据为基础数据集,把用户数据进行可视化加工和展示。
  • Astro智能助手 Astro智能助手(Astro Bot)作为提高生产力的机器人工具,提供构建快捷指令一样的体验,通过语料导入和智能分析,轻松构建企业知识库,打造多渠道服务助手,提高企业智能服务能力,实现业务过程的自动化。“华为云Astro智能助手(Astro Bot)”为白名单特性,请联系后台管理人员开通后方可使用。 AstroFlow可以为Astro Bot 提供丰富的语音和流程指令库,作为用户使用流程服务的模板源,提高企业智能管理的能力。
  • 训练启动脚本说明和参数配置 本代码包中集成了不同模型(包括llama2、llama3、Qwen、Qwen1.5 ......)的训练脚本,并可通过不同模型中的训练脚本一键式运行。训练脚本可判断是否完成预处理后的数据和权重转换的模型。如果未完成,则执行脚本,自动完成数据预处理和权重转换的过程。 若用户进行自定义数据集预处理以及权重转换,可通过Notebook环境编辑 1_preprocess_data.sh 、2_convert_mg_hf.sh中的具体python指令,并在Notebook环境中运行执行。本代码中有许多环境变量的设置,在下面的指导步骤中,会展开进行详细的解释。 若用户希望自定义参数进行训练,可直接编辑对应模型的训练脚本,可编辑参数以及详细介绍如下。以llama2-13b预训练为例: 表1 模型训练脚本参数 参数 示例值 参数说明 ORIGINAL_TRAIN_DATA_PATH /home/ma-user/work/training_data/pretrain/alpaca.parquet 必须修改。训练时指定的输入数据路径。请根据实际规划修改。 ORIGINAL_HF_WEIGHT /home/ma-user/work/model/llama-2-13b-chat-hf 必须修改。加载tokenizer与Hugging Face权重时,对应的存放地址。请根据实际规划修改。 MODEL_NAME llama2-13b 对应模型名称。 RUN_TYPE pretrain 表示训练类型。可选择值:[pretrain, sft, lora]。 DATA_TYPE [GeneralPretrainHandler, GeneralInstructionHandler] 示例值需要根据数据集的不同,选择其一。 GeneralPretrainHandler:使用预训练的alpaca数据集; GeneralInstructionHandler:使用微调的alpaca数据集; MBS 4 表示流水线并行中一个micro batch所处理的样本量。在流水线并行中,为了减少气泡时间,会将一个step的数据切分成多个micro batch。 该值与TP和PP以及模型大小相关,可根据实际情况进行调整。 GBS 512 表示训练中所有机器一个step所处理的样本量。影响每一次训练迭代的时长。 TP 8 表示张量并行。 PP 1 表示流水线并行。一般此值与训练节点数相等,与权重转换时设置的值相等。 LR 2.5e-5 学习率设置。 MIN_LR 2.5e-6 最小学习率设置。 SEQ_LEN 4096 要处理的最大序列长度。 MAX_PE 8192 设置模型能够处理的最大序列长度。 SN 1200 必须修改。指定的输入数据集中数据的总数量。更换数据集时,需要修改。 EPOCH 5 表示训练轮次,根据实际需要修改。一个Epoch是将所有训练样本训练一次的过程。 TRAIN_ITERS SN / GBS * EPOCH 非必填。表示训练step迭代次数,根据实际需要修改。 SEED 1234 随机种子数。每次数据采样时,保持一致。 不同模型推荐的训练参数和计算规格要求如表2所示。规格与节点数中的1*节点 & 4*Ascend表示单机4卡,以此类推。 表2 不同模型推荐的参数与NPU卡数设置 序号 支持模型 支持模型参数量 文本序列长度 并行参数设置 规格与节点数 1 llama2 llama2-7b SEQ_LEN=4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend 2 llama2-13b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 1*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 1*节点 & 8*Ascend 3 llama2-70b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 4*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 8*节点 & 8*Ascend 4 llama3 llama3-8b SEQ_LEN=4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend 5 llama3-70b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 4*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 8*节点 & 8*Ascend 6 Qwen qwen-7b SEQ_LEN=4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend 7 qwen-14b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 1*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 1*节点 & 8*Ascend 8 qwen-72b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 4*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 8*节点 & 8*Ascend 9 Qwen1.5 qwen1.5-7b SEQ_LEN=4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend 10 qwen1.5-14b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 1*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 1*节点 & 8*Ascend 11 qwen1.5-32b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 2*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 2*节点 & 8*Ascend 12 qwen1.5-72b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 4*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 8*节点 & 8*Ascend 13 Yi yi-6b SEQ_LEN=4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend 14 yi-34b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 2*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 2*节点 & 8*Ascend 15 ChatGLMv3 glm3-6b SEQ_LEN=4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend 16 Baichuan2 baichuan2-13b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 1*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 1*节点 & 8*Ascend 父主题: 训练脚本说明
  • 训练启动脚本说明和参数配置 本代码包中集成了不同模型的训练脚本,并可通过不同模型中的训练脚本一键式运行。训练脚本可判断是否完成预处理后的数据和权重转换的模型。若未完成,则执行脚本,自动完成数据预处理和权重转换的过程。 若用户进行自定义数据集预处理以及权重转换,可通过编辑 1_preprocess_data.sh 、2_convert_mg_hf.sh 中的具体python指令运行。本代码中有许多环境变量的设置,在下面的指导步骤中,会展开进行详细的解释。 若用户希望自定义参数进行训练,可直接编辑对应模型的训练脚本,可编辑参数以及详细介绍如下。以 llama2-70b 预训练为例: 表1 模型训练脚本参数 参数 示例值 参数说明 ORIGINAL_TRAIN_DATA_PATH /home/ma-user/ws/llm_train/AscendSpeed/training_data/pretrain/alpaca.parquet 必须修改。训练时指定的输入数据路径。请根据实际规划修改。 ORIGINAL_HF_WEIGHT /home/ma-user/ws/llm_train/AscendSpeed/model/llama2-70B 必须修改。加载tokenizer与Hugging Face权重时,对应的存放地址。请根据实际规划修改。 MODEL_NAME llama2-70b 对应模型名称。 RUN_TYPE pretrain 表示训练类型。可选择值:[pretrain, sft, lora]。 DATA_TYPE [GeneralPretrainHandler, GeneralInstructionHandler] 示例值需要根据数据集的不同,选择其一。 GeneralPretrainHandler:使用预训练的alpaca数据集。 GeneralInstructionHandler:使用微调的alpaca数据集。 MBS 1 表示流水线并行中一个micro batch所处理的样本量。在流水线并行中,为了减少气泡时间,会将一个step的数据切分成多个micro batch。 该值与TP和PP以及模型大小相关,可根据实际情况进行调整。 GBS 128 表示训练中所有机器一个step所处理的样本量。影响每一次训练迭代的时长。 TP 8 表示张量并行。 PP 8 表示流水线并行。一般此值与训练节点数相等,与权重转换时设置的值相等。 LR 2.5e-5 学习率设置。 MIN_LR 2.5e-6 最小学习率设置。 SEQ_LEN 4096 要处理的最大序列长度。 MAX_PE 8192 设置模型能够处理的最大序列长度。 SN 1200 必须修改。指定的输入数据集中数据的总数量。更换数据集时,需要修改。 EPOCH 5 表示训练轮次,根据实际需要修改。一个Epoch是将所有训练样本训练一次的过程。 TRAIN_ITERS SN / GBS * EPOCH 非必填。表示训练step迭代次数,根据实际需要修改。 SEED 1234 随机种子数。每次数据采样时,保持一致。 不同模型推荐的训练参数和计算规格要求如表2所示。规格与节点数中的1*节点 & 4*Ascend表示单机4卡,以此类推。 表2 不同模型推荐的参数与NPU卡数设置 序号 支持模型 支持模型参数量 文本序列长度 并行参数设置 规格与节点数 1 llama2 llama2-7b SEQ_LEN=4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend 2 llama2-13b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 1*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 1*节点 & 8*Ascend 3 llama2-70b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 4*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 8*节点 & 8*Ascend 4 llama3 llama3-8b SEQ_LEN=4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend 5 llama3-70b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 4*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 8*节点 & 8*Ascend 6 Qwen qwen-7b SEQ_LEN=4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend 7 qwen-14b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 1*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 1*节点 & 8*Ascend 8 qwen-72b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 4*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 8*节点 & 8*Ascend 9 Qwen1.5 qwen1.5-7b SEQ_LEN=4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend 10 qwen1.5-14b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 1*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 1*节点 & 8*Ascend 11 qwen1.5-32b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 2*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 2*节点 & 8*Ascend 12 qwen1.5-72b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 4*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 8*节点 & 8*Ascend 13 Yi yi-6b SEQ_LEN=4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend 14 yi-34b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 2*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 2*节点 & 8*Ascend 15 ChatGLMv3 glm3-6b SEQ_LEN=4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1*节点 & 4*Ascend 16 Baichuan2 baichuan2-13b SEQ_LEN=4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 1*节点 & 8*Ascend SEQ_LEN=8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 1*节点 & 8*Ascend 父主题: 训练脚本说明
  • HuggingFace转Megatron参数说明 --model-type:模型类型。 --loader:选择对应加载模型脚本的名称。 --saver:选择模型保存脚本的名称。 --tensor-model-parallel-size:${TP}张量并行数,需要与训练脚本中的TP值配置一样。 --pipeline-model-parallel-size:${PP}流水线并行数,需要与训练脚本中的PP值配置一样。 --load-dir:加载转换模型权重路径。 --save-dir : 权重转换完成之后保存路径。 --tokenizer-model : tokenizer路径。
  • Megatron转HuggingFace参数说明 训练完成的权重文件默认不会自动转换为Hugging Face格式权重。若用户需要自动转换,则在运行脚本,例如0_pl_pretrain_13b.sh中,添加变量CONVERT_MG2HF并赋值TRUE。若用户后续不需要自动转换,则在运行脚本中必须删除CONVERT_MG2HF变量。 Megatron转HuggingFace脚本具体参数如下: --model-type:模型类型。 --save-model-type:输出后权重格式。 --load-dir:训练完成后保存的权重路径。 --save-dir:需要填入原始HF模型路径,新权重会存于../Llama2-13B/mg2hg下。 --target-tensor-parallel-size:任务不同调整参数target-tensor-parallel-size,默认为1。 --target-pipeline-parallel-size :任务不同调整参数target-pipeline-parallel-size,默认为1。 输出转换后权重文件保存路径: 权重转换完成后,在 /home/ma-user/ws/saved_dir_for_output/llama2-13b/saved_models/pretrain_hf/ 目录下查看转换后的权重文件。
  • 用户自定义执行权重转换参数修改说明 同样以 llama2 为例,用户可直接编辑 scripts/llama2/2_convert_mg_hf.sh 脚本,自定义环境变量的值,并运行该脚本。其中环境变量详细介绍如下: 表1 权重转换脚本中的环境变量 参数 示例 参数说明 $1 hf2hg、mg2hf 运行 2_convert_mg_hf.sh 时,需要附加的参数值。如下: hf2hg:用于Hugging Face 转 Megatron mg2hf:用于Megatron 转 Hugging Face TP 8 张量并行数,一般等于单机卡数 PP 1 流水线并行数,一般等于节点数量 ORIGINAL_HF_WEIGHT /home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/tokenizers/Llama2-13B 原始Hugging Face模型路径 CONVERT_MODEL_PATH /home/ma-user/ws/processed_for_ma_input/llama2-13b/converted_weights_TP8PP1 权重转换完成之后保存路径 TOKENIZER_PATH /home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/tokenizers/Llama2-13B tokenizer路径,即:原始Hugging Face模型路径 MODEL_SAVE_PATH /home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/saved_dir_for_output/llama2-13b 训练完成后保存的权重路径。
  • HuggingFace转Megatron参数说明 --model-type:模型类型。 --loader:选择对应加载模型脚本的名称。 --saver:选择模型保存脚本的名称。 --tensor-model-parallel-size:${TP}张量并行数,需要与训练脚本中的TP值配置一样。 --pipeline-model-parallel-size:${PP}流水线并行数,需要与训练脚本中的PP值配置一样。 --load-dir:加载转换模型权重路径。 --save-dir : 权重转换完成之后保存路径。 --tokenizer-model : tokenizer路径。
  • 用户自定义执行权重转换参数修改说明 同样以 llama2 为例,用户可在Notebook直接编辑scripts/llama2/2_convert_mg_hf.sh脚本,自定义环境变量的值,并在Notebook运行该脚本。其中环境变量详细介绍如下: 表1 权重转换脚本中的环境变量 参数 示例 参数说明 $1 hf2hg、mg2hf 运行 2_convert_mg_hf.sh 时,需要附加的参数值。如下: hf2hg:用于Hugging Face 转 Megatron mg2hf:用于Megatron 转 Hugging Face TP 8 张量并行数,一般等于单机卡数 PP 1 流水线并行数,一般等于节点数量 ORIGINAL_HF_WEIGHT /home/ma-user/work/model/Llama2-13B 原始Hugging Face模型路径 CONVERT_MODEL_PATH /home/ma-user/work/llm_train/processed_for_ma_input/llama2-13b/converted_weights_TP8PP1 权重转换完成之后保存路径 TOKENIZER_PATH /home/ma-user/work/model/llama-2-13b-chat-hf tokenizer路径,即:原始Hugging Face模型路径 MODEL_SAVE_PATH /home/ma-user/work/llm_train/saved_dir_for_output/llama2-13b 训练完成后保存的权重路径。
  • Megatron转HuggingFace参数说明 训练完成的权重文件默认不会自动转换为Hugging Face格式权重。若用户需要自动转换,则在运行脚本,例如0_pl_pretrain_13b.sh中,添加变量CONVERT_MG2HF并赋值TRUE。若用户后续不需要自动转换,则在运行脚本中必须删除CONVERT_MG2HF变量。 Megatron转HuggingFace脚本具体参数如下: --model-type:模型类型。 --save-model-type:输出后权重格式。 --load-dir:训练完成后保存的权重路径。 --save-dir:需要填入原始HF模型路径,新权重会存于../Llama2-13B/mg2hg下。 --target-tensor-parallel-size:任务不同调整参数target-tensor-parallel-size,默认为1。 --target-pipeline-parallel-size :任务不同调整参数target-pipeline-parallel-size,默认为1。 输出转换后权重文件保存路径: 权重转换完成后,在/home/ma-user/work/llm_train/saved_dir_for_output/llama2-13b/saved_models/pretrain_hf/目录下查看转换后的权重文件。
共100000条