华为云用户手册
-
方式二:通过服务详情页面修改服务信息 登录ModelArts管理控制台,在左侧菜单栏中选择“模型部署”,进入目标服务类型管理页面。 单击目标服务名称,进入服务详情页面。 您可以通过单击页面右上角“修改”,修改服务基本信息,然后根据提示提交修改任务。 当修改了服务的某些参数配置时,系统会自动重启服务使修改生效。在提交修改服务任务时,如果涉及重启,会有弹窗提醒。批量服务参数说明请参见将模型部署为批量推理服务。
-
约束限制 服务升级关系着业务实现,不当的升级操作会导致升级期间业务中断的情况,请谨慎操作。 ModelArts支持部分场景下在线服务进行无损滚动升级。按要求进行升级前准备,做好验证,即可实现业务不中断的无损升级。 表1 支持无损滚动升级的场景 创建模型的元模型来源 服务使用的是公共资源池 服务使用的是专属资源池 从训练中选择元模型 不支持 不支持 从容器镜像中选择元模型 不支持 支持,创建模型的 自定义镜像 需要满足创建模型的自定义镜像规范。 从OBS中选择元模型 不支持 不支持
-
https示例 使用Flask启动https,Webserver代码示例如下: from flask import Flask, request import json app = Flask(__name__) @app.route('/greet', methods=['POST']) def say_hello_func(): print("----------- in hello func ----------") data = json.loads(request.get_data(as_text=True)) print(data) username = data['name'] rsp_msg = 'Hello, {}!'.format(username) return json.dumps({"response":rsp_msg}, indent=4) @app.route('/goodbye', methods=['GET']) def say_goodbye_func(): print("----------- in goodbye func ----------") return '\nGoodbye!\n' @app.route('/', methods=['POST']) def default_func(): print("----------- in default func ----------") data = json.loads(request.get_data(as_text=True)) return '\n called default func !\n {} \n'.format(str(data)) @app.route('/health', methods=['GET']) def healthy(): return "{\"status\": \"OK\"}" # host must be "0.0.0.0", port must be 8080 if __name__ == '__main__': app.run(host="0.0.0.0", port=8080, ssl_context='adhoc')
-
在本地机器调试 自定义引擎的规范可以在安装有docker的本地机器上通过以下步骤提前验证: 将自定义引擎镜像下载至本地机器,假设镜像名为custom_engine:v1。 将模型包文件夹复制到本地机器,假设模型包文件夹名字为model。 在模型包文件夹的同级目录下验证如下命令拉起服务: docker run --user 1000:100 -p 8080:8080 -v model:/home/mind/model custom_engine:v1 该指令无法完全模拟线上,主要是由于-v挂载进去的目录是root权限。在线上,模型文件从OBS下载到/home/mind/model目录之后,文件owner将统一修改为ma-user。 在本地机器上启动另一个终端,执行以下验证指令,得到符合预期的推理结果。 curl https://127.0.0.1:8080/${推理服务的请求路径}
-
SSE在线服务调用 SSE协议本身不提供额外的认证方式,和HTTP请求方式一致。 可以使用ModelArts提供的以下认证方式: token认证 AK/SK APP认证 SSE服务调用如下(以图形界面的软件Postman进行预测,token认证为例): 图1 SSE服务调用 图2 响应头Content-Type 正常情况下,可以观察到响应头Content-Type为text/event-stream;charset=UTF-8。
-
准备工作 使用专属资源池部署在线服务,服务状态为“运行中”。 需使用新版专属资源池部署服务,详情请参见ModelArts Standard资源池功能介绍。 只有专属资源池部署的服务才支持VPC直连的高速访问通道。 VPC直连的高速访问通道,目前只支持访问在线服务。 因流量限控,获取在线服务的IP和端口号次数有限制,每个主账号租户调用次数不超过2000次/分钟,每个子账号租户不超过20次/分钟。 目前仅支持自定义镜像导入模型,部署的服务支持高速访问通道。
-
实时推理的部署及使用流程 在创建完模型后,可以将模型部署为一个在线服务。当在线服务的状态处于“运行中”,则表示在线服务已部署成功,部署成功的在线服务,将为用户提供一个可调用的API,此API为标准Restful API。访问在线服务时,您可以根据您的业务需求,分别确认使用何种认证方式、访问通道、传输协议,以上三个要素共同构成您的访问请求,三者可自由组合互不影响(例如不同的认证方式可以搭配不同的访问通道、不同的传输协议)。 图1 认证方式、访问通道、传输协议 当前ModelArts支持访问在线服务的认证方式有以下方式(案例中均以HTTPS请求为例): Token认证:Token具有时效性,有效期为24小时,需要使用同一个Token鉴权时,可以缓存起来,避免频繁调用。 AK/SK认证:使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。AK/SK签名认证方式仅支持消息体大小12M以内,12M以上的请求请使用Token认证。 APP认证:在请求头部消息增加一个参数即可完成认证,认证方式简单,永久有效。 ModelArts支持通过以下几种方式调用API访问在线服务(案例中均以HTTPS请求为例): 通过公网访问通道的方式访问在线服务:ModelArts推理默认使用公网访问在线服务。在线服务部署成功后,将为用户提供一个可调用的API,此API为标准Restful API。 通过VPC高速访问通道的方式访问在线服务:使用VPC直连的高速访问通道,用户的业务请求不需要经过推理平台,而是直接经VPC对等连接发送到实例处理,访问速度更快。 在线服务的API默认为HTTPS访问,同时还支持以下的传输协议: 使用WebSocket协议的方式访问在线服务:WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就可以建立持久性的连接,并进行双向数据传输。 使用Server-Sent Events协议的方式访问在线服务:Server-Sent Events访问主要解决了客户端与服务器之间的单向实时通信需求(例如ChatGPT回答的流式输出),相较于WebSocket(双向实时),它更加轻量级且易于实现。 父主题: 将模型部署为实时推理作业
-
约束限制 服务升级关系着业务实现,不当的升级操作会导致升级期间业务中断的情况,请谨慎操作。 ModelArts支持部分场景下在线服务进行无损滚动升级。按要求进行升级前准备,做好验证,即可实现业务不中断的无损升级。 表1 支持无损滚动升级的场景 创建模型的元模型来源 服务使用的是公共资源池 服务使用的是专属资源池 从训练中选择元模型 不支持 不支持 从容器镜像中选择元模型 不支持 支持,创建模型的自定义镜像需要满足创建模型的自定义镜像规范。 从OBS中选择元模型 不支持 不支持
-
方式二:通过服务详情页面修改服务信息 登录ModelArts管理控制台,在左侧菜单栏中选择“模型部署”,进入目标服务类型管理页面。 单击目标服务名称,进入服务详情页面。 您可以通过单击页面右上角“修改”,修改服务基本信息,然后根据提示提交修改任务。 当修改了服务的某些参数配置时,系统会自动重启服务使修改生效。在提交修改服务任务时,如果涉及重启,会有弹窗提醒。 在线服务参数说明请参见部署模型为在线服务。修改在线服务还需要配置“最大无效实例数”设置并行升级的最大节点数,升级阶段节点无效。
-
方式一:通过服务管理页面修改服务信息 登录ModelArts管理控制台,在左侧菜单栏中选择“模型部署”,进入目标服务类型管理页面。 在服务列表中,单击目标服务操作列的“修改”,修改服务基本信息,然后根据提示提交修改任务。 当修改了服务的某些参数配置时,系统会自动重启服务使修改生效。在提交修改服务任务时,如果涉及重启,会有弹窗提醒。 在线服务参数说明请参见部署模型为在线服务。修改在线服务还需要配置“最大无效实例数”设置并行升级的最大节点数,升级阶段节点无效。
-
映射关系示例 如下示例展示了配置文件、映射规则、csv数据以及最终推理请求的关系。 假设,您的模型所用配置文件,其apis参数如下所示: 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 [ { "method": "post", "url": "/", "request": { "Content-type": "multipart/form-data", "data": { "type": "object", "properties": { "data": { "type": "object", "properties": { "req_data": { "type": "array", "items": [ { "type": "object", "properties": { "input_1": { "type": "number" }, "input_2": { "type": "number" }, "input_3": { "type": "number" }, "input_4": { "type": "number" } } } ] } } } } } } } ] 此时,其对应的映射关系如下所示。ModelArts管理控制台将从配置文件中自动解析映射关系,如果您调用ModelArts API时,需要自行根据规则编写映射关系。 { "type": "object", "properties": { "data": { "type": "object", "properties": { "req_data": { "type": "array", "items": [ { "type": "object", "properties": { "input_1": { "type": "number", "index": 0 }, "input_2": { "type": "number", "index": 1 }, "input_3": { "type": "number", "index": 2 }, "input_4": { "type": "number", "index": 3 } } } ] } } } } } 用户需要进行推理的数据,即 CS V数据,格式如下所示。数据必须以英文逗号隔开。 5.1,3.5,1.4,0.2 4.9,3.0,1.4,0.2 4.7,3.2,1.3,0.2 根据定义好的映射关系,最终推理请求样例如下所示,与在线服务使用的格式类似: { "data": { "req_data": [{ "input_1": 5.1, "input_2": 3.5, "input_3": 1.4, "input_4": 0.2 }] } }
-
方式二:使用Java语言发送预测请求 下载Java SDK并在开发工具中完成SDK配置。具体操作请参见在Java环境中集成API请求签名的SDK 创建Java类,进行预测请求。 由于在APIG的Java SDK中,“request.setBody()”只支持String类型,所以只支持输入为文本格式的预测请求。如果输入的是文件格式,需要先进行base64编码转换成文本。 输入为文件格式 此处以json格式为例介绍读取本地预测文件并进行base64编码的请求体,请求体示例如下: package com.apig.sdk.demo; import com.cloud.apigateway.sdk.utils.Client; import com.cloud.apigateway.sdk.utils.Request; import org.apache.commons.codec.binary.Base64; import org.apache.http.HttpHeaders; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; public class MyAkSkTest2 { public static void main(String[] args) { String url = "在线服务的调用地址"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 String ak = System.getenv("HUAWEICLOUD_SDK_AK"); String sk = System.getenv("HUAWEICLOUD_SDK_SK"); String filePath = "预测文件的本地路径"; try { // Create request Request request = new Request(); // Set the AK/SK to sign and authenticate the request. request.setKey(ak); request.setSecret(sk); // Specify a request method, such as GET, PUT, POST, DELETE, HEAD, and PATCH. request.setMethod(HttpPost.METHOD_NAME); // Add header parameters request.addHeader(HttpHeaders.CONTENT_TYPE, "application/json"); // Set a request URL in the format of https://{Endpoint}/{URI}. request.setUrl(url); // build your json body String body = "{\"image\":\"" + getBase64FromFile(filePath) + "\"}"; // Special characters, such as the double quotation mark ("), contained in the body must be escaped. request.setBody(body); // Sign the request. HttpRequestBase signedRequest = Client.sign(request); // Send request. CloseableHttpResponse response = HttpClients.createDefault().execute(signedRequest); // Print result System.out.println(response.getStatusLine().getStatusCode()); System.out.println(EntityUtils.toString(response.getEntity())); } catch (Exception e) { e.printStackTrace(); } } /** * Convert the file into a byte array and Base64 encode it * @return */ private static String getBase64FromFile(String filePath) { // Convert the file into a byte array InputStream in = null; byte[] data = null; try { in = new FileInputStream(filePath); data = new byte[in.available()]; in.read(data); in.close(); } catch (IOException e) { e.printStackTrace(); } // Base64 encode return new String(Base64.encodeBase64(data)); } } 使用base64编码方式,需要在模型推理代码中增加对请求体解码的代码。 输入为文本格式(json类型) // Package name of the demo. package com.apig.sdk.demo; import com.cloud.apigateway.sdk.utils.Client; import com.cloud.apigateway.sdk.utils.Request; import org.apache.http.HttpHeaders; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; public class MyAkSkTest { public static void main(String[] args) { String url = "在线服务的调用地址"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 String ak = System.getenv("HUAWEICLOUD_SDK_AK"); String sk = System.getenv("HUAWEICLOUD_SDK_SK"); try { // Create request Request request = new Request(); // Set the AK/SK to sign and authenticate the request. request.setKey(ak); request.setSecret(sk); // Specify a request method, such as GET, PUT, POST, DELETE, HEAD, and PATCH. request.setMethod(HttpPost.METHOD_NAME); // Add header parameters request.addHeader(HttpHeaders.CONTENT_TYPE, "application/json"); // Set a request URL in the format of https://{Endpoint}/{URI}. request.setUrl(url); // Special characters, such as the double quotation mark ("), contained in the body must be escaped. String body = "{}"; request.setBody(body); // Sign the request. HttpRequestBase signedRequest = Client.sign(request); // Send request. CloseableHttpResponse response = HttpClients.createDefault().execute(signedRequest); // Print result System.out.println(response.getStatusLine().getStatusCode()); System.out.println(EntityUtils.toString(response.getEntity())); } catch (Exception e) { e.printStackTrace(); } } } “body”由具体文本格式决定,此处以json为例。
-
获取AK/SK 如果已生成过AK/SK,则可跳过此步骤,找到原来已下载的AK/SK文件,文件名一般为:credentials.csv。 如下图所示,文件包含了租户名(User Name),AK(Access Key Id),SK(Secret Access Key)。 图1 credential.csv文件内容 AK/SK生成步骤: 注册并登录管理控制台。 单击右上角的用户名,在下拉列表中单击“我的凭证”。 单击“访问密钥”。 单击“新增访问密钥”,进入“身份验证”页面。 根据提示完成身份验证,下载密钥,并妥善保管。
-
查看模型详情 当模型创建成功后,您可以进入模型详情页查看模型的信息。 登录ModelArts管理控制台,在左侧菜单栏中选择“模型管理”,进入“自定义模型”列表页面。 单击目标模型名称,进入模型详情页面。 您可以查看模型的基本信息、模型精度,以及切换页签查看更多信息。 表3 模型基本信息 参数 说明 名称 模型的名称。 状态 模型当前状态。 版本 模型当前版本。 ID 模型的ID。 描述 单击编辑按钮,可以添加模型的描述。 部署类型 模型支持部署的服务类型。 元模型来源 显示元模型的来源,主要有从训练中选择、从 对象存储服务 (OBS)中选择、从容器镜像中选择。不同来源的元模型,模型显示的参数会不同。 训练作业名称 如果元模型来源于训练作业,则显示关联的训练作业,单击训练作业名称可以直接跳转到训练作业详情页面。 训练作业版本 如果元模型来源于训练作业且为旧版训练作业,显示训练作业版本。 元模型存储路径 如果元模型来源于对象存储服务,显示元模型的存放路径。 容器镜像存储路径 如果元模型来源于容器镜像,显示容器镜像存储路径。 AI引擎 如果元模型来源于训练作业/对象存储服务,显示模型使用的AI引擎。 引擎包地址 如果元模型来源于对象存储服务(AI引擎为Custom),显示引擎包地址。 运行环境 如果元模型来源于训练作业/对象存储服务(AI引擎为预置引擎),显示元模型依赖的运行环境。 容器调用接口 如果元模型来源于对象存储服务(AI引擎为Custom)/容器镜像,显示模型启动的协议和端口号。 推理代码 如果元模型来源于训练作业且为旧版训练作业,则显示推理代码的存放路径。 镜像复制 如果元模型来源于容器镜像,显示镜像复制功能状态。 动态加载 如果元模型来源于训练作业/对象存储服务,显示模型是否支持动态加载。 大小 模型的大小。 健康检查 如果元模型来源于对象存储服务/容器镜像,显示健康检查状态。当健康检查为开启时,会根据您启用的探针显示对应探针的参数设置情况。 启动探针:用于检测应用实例是否已经启动。如果提供了启动探针(startup probe),则禁用所有其他探针,直到它成功为止。如果启动探针失败,将会重启实例。如果没有提供启动探针,则默认状态为成功Success。 就绪探针:用于检测应用实例是否已经准备好接收流量。如果就绪探针失败,即实例未准备好,会从服务负载均衡的池中剔除该实例,不会将流量路由到该实例,直到探测成功。 存活探针:用于检测应用实例内应用程序的健康状态。如果存活探针失败,即应用程序不健康,将会自动重启实例。 每种探针下会显示以下字段:检查方式、健康检查URL(检查方式为“HTTP请求检查”时显示)、健康检查命令(检查方式为“执行命令检查”时显示)、健康检查周期、延迟时间、超时时间、最大失败次数。 模型说明 显示创建模型时添加的模型说明文档信息。 系统运行架构 显示系统运行架构。 推理加速卡类型 显示推理加速卡类型。 表4 模型页签详情 参数 说明 模型精度 显示该模型的模型召回率、精准率、准确率和F1值。 参数配置 可以查看模型的apis定义详情,以及模型的入参和出参。 运行时依赖 查看模型对环境的依赖。当构建任务失败后可以编辑运行时依赖,保存修改后将触发镜像重新构建。 事件 展示模型创建过程中的关键操作进展。 事件保存周期为3个月,3个月后自动清理数据。 查看模型的事件类型和事件信息,请参见查看ModelArts模型事件 使用约束 根据创建模型时的设置,显示部署服务的使用约束,如请求模式、启动命令、模型加密等。对于异步请求模式的模型,可显示输入模式、输出模式、服务启动参数和作业配置参数等参数。 关联服务 展示使用该模型部署的服务列表,单击服务名称可以直接跳转到服务详情页面。
-
创建模型的几种场景 从训练作业中导入模型文件创建模型:在ModelArts中创建训练作业,并完成模型训练,在得到满意的模型后,可以将训练后得到的模型创建为模型,用于部署服务。 从OBS中导入模型文件创建模型:如果您使用常用框架在本地完成模型开发和训练,可以将本地的模型按照模型包规范上传至OBS桶中,从OBS将模型导入至ModelArts中,创建为模型,直接用于部署服务。 从容器镜像中导入模型文件创建模型:针对ModelArts目前不支持的AI引擎,可以通过自定义镜像的方式将编写的模型镜像导入ModelArts,创建为模型,用于部署服务。 从AI Gallery订阅模型:ModelArts的AI Gallery中提供了大量免费的模型供用户一键部署,您可订阅AI Gallery上的模型进行AI体验学习。
-
模型部署 模型部署操作即将模型部署为在线服务,并且提供在线的测试UI与监控能力。完成模型训练后,可选择准确率理想且训练状态为“运行成功”的版本部署上线。具体操作步骤如下。 在“运行总览”页面中,待服务部署节点的状态变为“等待输入”,双击“服务部署”节点,进入配置详情页,完成资源的参数配置操作。 在服务部署页面,选择模型部署使用的资源规格。 模型来源:默认为生成的模型。 选择模型版本:自动匹配当前使用的模型版本,支持选择版本。 资源池:默认公共资源池。 分流:默认为100,输入值必须是0-100之间。 计算节点规格:请根据界面显示的列表,选择可用的规格,置灰的规格表示当前环境无法使用。如果公共资源池下规格为空数据,表示当前环境无公共资源。建议使用专属资源池,或者联系系统管理员创建公共资源池。 计算节点个数:默认为1,输入值必须是1-5之间的整数。 是否自动停止:启用该参数并设置时间后,服务将在指定时间后自动停止。如果不启用此参数,在线服务将一直运行,同时一直收费,自动停止功能可以帮您避免产生不必要的费用。默认开启自动停止功能,且默认值为“1小时后”。 目前支持设置为“1小时后”、“2小时后”、“4小时后”、“6小时后”、“自定义”。如果选择“自定义”的模式,可在右侧输入框中输入1~24范围内的任意整数。 如果您购买了套餐包,计算节点规格可选择您的套餐包,同时在“配置费用”页签还可查看您的套餐包余量以及超出部分的计费方式,请您务必关注,避免造成不必要的资源浪费。 完成资源配置后,单击“继续运行”,在弹框中确认继续运行后,服务部署节点将继续运行,直至状态变为“运行成功”,至此,已将模型部署为在线服务。
-
服务测试 服务部署节点运行成功后,单击“实例详情”可跳转至对应的在线服务详情页面。单击“预测”页签,进行服务测试。 图1 服务测试 下面的测试,是您在自动学习文本分类项目页面将模型部署上线之后进行服务测试的操作步骤。 模型部署完成后,您可添加文本进行测试。在“自动学习”页面,选择目标项目,进入“模型部署”界面,选择状态为“运行中”的服务版本,在“服务测试”区域的文本框中,输入需测试的文本。 单击“预测”进行测试,预测完成后,右侧“预测结果”区域输出测试结果。如模型准确率不满足预期,可在“数据标注”页签中添加数据并进行标注,重新进行模型训练及模型部署。预测结果中的参数说明请参见表1。如果您对模型预测结果满意,可根据界面提示调用接口访问在线服务。 表1 预测结果中的参数说明 参数 说明 predicted_label 该段文本的预测类别。 score 预测为此类别的置信度。 由于“运行中”的在线服务将持续耗费资源,如果不需再使用此在线服务,建议在版本管理区域,单击“停止”,即可停止在线服务的部署,避免产生不必要的费用。如果需要继续使用此服务,可单击“启动”恢复。 如果您启用了自动停止功能,服务将在指定时间后自动停止,不再产生费用。
-
操作步骤 在新版自动学习页面,单击项目名称进入运行总览,单击“数据标注”节点的“实例详情”进入“数据标注”页面,完成数据标注。 图1 完成数据标注 返回新版自动学习页面,单击数据标注节点的“继续运行”,然后等待工作流按顺序进入训练节点。 模型将会自动进入训练,无需人工介入,训练时间相对较长,建议您耐心等待。如果关闭或退出此页面,系统仍然在执行训练操作。 在“文本分类”节点中,待训练状态由“运行中”变为“运行成功”,即完成模型的自动训练。 图2 运行成功 训练完成后,您可以单击文本分类节点上方的按钮,查看相关指标信息,如“准确率”、“评估结果”等。评估结果参数说明请参见表1。 图3 模型评估报告 表1 评估结果参数说明 参数 说明 recall:召回率 被用户标注为某个分类的所有样本中,模型正确预测为该分类的样本比率,反映模型对正样本的识别能力。 precision:精确率 被模型预测为某个分类的所有样本中,模型正确预测的样本比率,反映模型对负样本的区分能力。 accuracy:准确率 所有样本中,模型正确预测的样本比率,反映模型对样本整体的识别能力。 f1:F1值 F1值是模型精确率和召回率的加权调和平均,用于评价模型的好坏,当F1较高时说明模型效果较好。 同一个自动学习项目可以训练多次,每次训练生成一个版本。如第一次训练版本号为“0.0.1”,下一个版本为“0.0.2”。基于训练版本可以对训练模型进行管理。当训练的模型达到目标后,再执行模型部署的操作。
-
修改标签 针对文本分类的自动学习项目,项目创建成功后,您可以根据业务变化,修改用于标注的标签。支持添加、修改和删除标签。 添加标签 在“未标注”页签下,单击“标签集”右侧的加号,在弹出“新增标签”对话框中,设置“标签名称”和“标签颜色”,然后单击“确定”完成标签添加。 修改标签 在“已标注”页签中“全部标签”的下方操作列,选择需要修改的标签,单击操作列的编辑图标,在弹出“修改标签”对话框中,修改“标签名称”或“标签颜色”,然后单击“确定”完成标签修改。 删除标签 在“已标注”页签中“全部标签”的下方,选择需要删除的标签,单击操作列的删除图标,在弹出“删除”对话框中,选择“仅删除标签”或“删除标签及仅包含此标签的标注对象”,然后单击“确定”完成标签删除。 所有的删除操作均不可恢复,请谨慎操作。
-
添加或删除数据 自动学习项目中,数据来源为数据集中输入位置对应的OBS目录,当目录下的数据无法满足现有业务时,您可以在ModelArts自动学习页面中,添加或删除数据。 添加文件 在“未标注”页签下,可单击页面左上角的“添加数据”,您可以在弹出对话框中,选择本地文件上传。 上传文件格式需满足文本分类型的数据集要求。 删除文本对象 在“已标注”页签或“未标注”页签下,选中需要删除的文本对象,单击页面左上角的“删除”,在弹出的对话框中,确认删除信息后,单击“确定”。 在“已标注”页签下,您还可以勾选“选择当前页”,单击“删除”,即可删除当前页下所有的文本对象及其标注信息。
-
服务测试 服务部署节点运行成功后,单击“实例详情”可跳转至对应的在线服务详情页面。单击“预测”页签,进行服务测试。 图1 服务测试 下面的测试,是您在自动学习声音分类项目页面将模型部署之后进行服务测试的操作步骤。 模型部署完成后,您可添加音频文件进行测试。在“自动学习”页面,选择服务部署节点,单击实例详情,进入“模型部署”界面,选择状态为“运行中”的服务版本,在“服务测试”区域单击“上传”,选择本地音频进行测试。 单击“预测”进行测试,预测完成后,右侧“预测结果”区域输出测试结果。如模型准确率不满足预期,可在“数据标注”页签中添加音频并进行标注,重新进行模型训练及模型部署。预测结果中的参数说明请参见表1。如果您对模型预测结果满意,可根据界面提示调用接口访问在线服务。 表1 预测结果中的参数说明 参数 说明 predicted_label 该段音频的预测类别。 score 预测为此类别的置信度。 由于“运行中”的在线服务将持续耗费资源,如果不需再使用此在线服务,建议在版本管理区域,单击“停止”,即可停止在线服务的部署,避免产生不必要的费用。如果需要继续使用此服务,可单击“启动”恢复。 如果您启用了自动停止功能,服务将在指定时间后自动停止,不再产生费用。
-
模型部署 模型部署操作即将模型部署为在线服务,并且提供在线的测试UI与监控能力。完成模型训练后,可选择准确率理想且训练状态为“运行成功”的版本部署上线。具体操作步骤如下。 在“运行总览”页面中,待服务部署节点的状态变为“等待输入”时,双击“服务部署”进入配置详情页,完成资源的参数配置操作。 在服务部署页面,选择模型部署使用的资源规格。 模型来源:默认为生成的模型。 选择模型及版本:自动匹配当前使用的模型版本,支持选择版本。 资源池:默认公共资源池。 分流:默认为100,输入值必须是0-100之间。 计算节点规格:请根据界面显示的列表,选择可用的规格,置灰的规格表示当前环境无法使用。如果公共资源池下规格为空数据,表示当前环境无公共资源。建议使用专属资源池,或者联系系统管理员创建公共资源池。 计算节点个数:默认为1,输入值必须是1-5之间的整数。 是否自动停止:启用该参数并设置时间后,服务将在指定时间后自动停止。如果不启用此参数,在线服务将一直运行,同时一直收费,自动停止功能可以帮您避免产生不必要的费用。默认开启自动停止功能,且默认值为“1小时后”。 目前支持设置为“1小时后”、“2小时后”、“4小时后”、“6小时后”、“自定义”。如果选择“自定义”的模式,可在右侧输入框中输入1~24范围内的任意整数。 如果您购买了套餐包,计算节点规格可选择您的套餐包,同时在“配置费用”页签还可查看您的套餐包余量以及超出部分的计费方式,请您务必关注,避免造成不必要的资源浪费。 完成资源配置后,单击“继续运行”,在弹框中确认继续运行后,服务部署节点将继续运行,直至状态变为“运行成功”,至此,已将模型部署为在线服务。
-
操作步骤 在开始训练之前,需要完成数据标注,然后再开始模型的自动训练。 在新版自动学习页面,单击项目名称进入运行总览页面,单击数据标注节点的“实例详情”进入数据标注页面,完成数据标注。 返回新版自动学习页面,单击数据标注节点的“继续运行”,然后等待工作流按顺序进入训练节点。 模型将会自动进入训练,无需人工介入,训练时间相对较长,建议您耐心等待。如果关闭或退出此页面,系统仍然在执行训练操作。 在“声音分类”节点中,待训练状态由“运行中”变为“运行成功”,即完成模型的自动训练。 训练完成后,您可以单击声音分类节点上方的按钮,查看相关指标信息,如“准确率”、“评估结果”等。 表1 评估结果参数说明 参数 说明 recall:召回率 被用户标注为某个分类的所有样本中,模型正确预测为该分类的样本比率,反映模型对正样本的识别能力。 precision:精确率 被模型预测为某个分类的所有样本中,模型正确预测的样本比率,反映模型对负样本的区分能力。 accuracy:准确率 所有样本中,模型正确预测的样本比率,反映模型对样本整体的识别能力。 f1:F1值 F1值是模型精确率和召回率的加权调和平均,用于评价模型的好坏,当F1较高时说明模型效果较好。 同一个自动学习项目可以训练多次,每次训练会注册一个新的模型版本。如第一次训练版本号为“0.0.1”,下一个版本为“0.0.2”。基于训练版本可以对训练模型进行管理。当训练的模型达到目标后,再执行模型部署的操作。
-
修改标注 当数据完成标注后,您还可以进入“已标注”页签,对已标注的数据进行修改。 基于音频修改 在数据集详情页,单击“已标注”页签,然后在音频列表中选中待修改的音频(选择一个或多个)。在右侧标签信息区域中对标签进行修改。 修改标签:在“选中文件标签”区域中,单击操作列的编辑图标,然后在文本框中输入正确的标签名,然后单击确定图标完成修改。 删除标签:在“选中文件标签”区域中,单击操作列的删除图标,在弹出的对话框中单击“确定”删除该标签。 基于标签修改 在数据标注页面,单击右侧的“标签管理”,在标签管理页,显示全部标签的信息。 修改标签:单击操作列的“修改”按钮,在弹出的对话框中输入修改后的标签名、选择修改后的快捷键,然后单击“确定”完成修改。修改后,之前添加了此标签的音频,都将被标注为新的标签名称。 删除标签:单击操作列的“删除”按钮,在弹出的对话框中,根据提示选择删除对象,然后单击“确定”。 删除后的标签无法恢复,请谨慎操作。
-
音频标注 在新版自动学习页面单击“实例详情”按钮,前往数据标注页面。单击任意一张图片,进入音频标注页面。 在“音频标注”页面单击“未标注”页签,此页面展示所有未标注的音频数据。依次单击选中待标注的音频,或勾选“选择当前页”选中该页面所有音频,在页面右侧进行标注。 图2 音频标注 添加标注。先对音频进行播放识别,然后选中音频文件,在右侧“标签”区域,输入“标签名”或从下拉列表中选择已添加的标签,同时可在下拉菜单中选择标签“快捷键”。单击“确定”,完成选中音频的标注操作。 当目录中所有音频都完成标注后,您可以在“已标注”页签下查看已完成标注的音频,或者通过右侧的“全部标签”列表,了解当前已完成的标签名称和标签数量。
-
同步或添加音频 在“数据标注”节点单击“实例详情”进入“音频标注”页面。声音分类项目创建时,音频来源有两种,通过本地添加或同步OBS中的数据。 添加音频:您可以将本地音频快速添加到ModelArts,同时自动上传至创建项目时所选择的OBS路径中。单击“添加数据”,在弹出的对话框中输入正确的数据并添加。 仅支持16bit WAV格式音频文件,单个音频文件不能超过4MB,且单次上传的音频文件总大小不能超过8MB。 数据源同步:为了快速获取用户OBS桶中最新音频,单击“数据源同步”,快速将通过OBS上传的音频数据添加到ModelArts。 删除音频:您可以依次单击选中音频,或勾选“选择当前页”选中该页面所有音频进行删除操作。 所有的删除操作均不可恢复,请谨慎操作。
-
数据上传至OBS 在本文档中,采用通过OBS管理控制台将数据上传至OBS桶。 上传OBS的文件规范: 如不需要提前上传训练数据,请创建一个空文件夹用于存放工程后期生成的文件。如:“/bucketName/data-cat”。 如需要提前上传待标注的音频,请创建一个空文件夹,然后将音频文件保存在该文件夹下,音频的目录结构如:“/bucketName/data-cat/cat.wav”。 上传OBS的操作步骤: 执行如下操作,将数据导入到您的数据集中,以便用于模型训练和构建。 登录OBS管理控制台,在ModelArts同一区域内创建桶。如果已存在可用的桶,需确保OBS桶与ModelArts在同一区域。 参考上传文件,将本地数据上传至OBS桶中。如果您的数据较多,推荐OBS Browser+上传数据或上传文件夹。上传的数据需满足此类型自动学习项目的数据集要求。 在上传数据时,请选择非加密桶进行上传,否则会由于加密桶无法解密导致后期的训练失败。 用于训练的音频,至少有2种以上的分类,每种分类的音频数据数不少20条。
-
声音分类的数据要求 音频只支持16bit的WAV格式。支持WAV的所有子格式。 单条音频时长应大于1s,大小不能超过4MB。 适当增加训练数据,会提升模型的精度。声音分类建议每类音频至少20条,每类音频总时长至少5分钟。 建议训练数据和真实识别场景的声音保持一致并且每类的音频尽量覆盖真实环境的所有场景。 训练集的数据质量对于模型的精度有很大影响,建议训练集音频的采样率和采样精度保持一致。 标注质量对于最终的模型精度有极大的影响,标注过程中尽量不要出现误标情况。 音频标注涉及到的标注标签和声音内容只支持中文和英文,不支持小语种。
-
操作步骤 在新版自动学习页面,单击创建成功的项目名称,查看当前工作流的执行情况。 在“预测分析”节点中,待节点状态由“运行中”变为“运行成功”,即完成了模型的自动训练。 训练完成后,您可以在预测分析节点中单击查看训练详情,如“标签列”和“标签列数据类型”、“准确率”、“评估结果”等。 该示例为二分类的离散型数值,评估效果参数说明请参见表1。 不同类型标签列数据产生的评估结果说明请参见评估结果说明。 图1 模型评估报告 同一个自动学习项目可以训练多次,每次训练会注册一个新的模型一个版本。如第一次训练版本号为“0.0.1”,下一个版本为“0.0.2”。基于训练版本可以对训练模型进行管理。当训练的模型达到目标后,再执行模型部署的操作。
-
评估结果说明 根据训练数据类的不同评估结果会包含不同的指标。 离散值评估结果 包含评估指标为召回率(Recall)、精确率(Precision)、准确率(Accuracy)与F1值(F1 Score)。下表为具体说明: 表1 离散值评估结果包含指标说明 参数 说明 recall:召回率 被用户标注为某个分类的所有样本中,模型正确预测为该分类的样本比率,反映模型对正样本的识别能力。 precision:精确率 被模型预测为某个分类的所有样本中,模型正确预测的样本比率,反映模型对负样本的区分能力。 accuracy:准确率 所有样本中,模型正确预测的样本比率,反映模型对样本整体的识别能力。 f1:F1值 F1值是模型精确率和召回率的加权调和平均,用于评价模型的好坏,当F1较高时说明模型效果较好。 连续数值评估结果 包含评估指标为平均绝对误差(Mean Absolute Error)、均方误差(Mean Squared Error)与均方根误差(Root Mean Squared Error)。三个误差值能够表征真实值和预测值之间的差距。在多次建模的过程中,每一次建模结果都会产生一组误差值,评判一个模型好坏的方法就是看这三个误差值是否变小或者变大,误差值越小表示模型越好。
共100000条
- 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
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- ...
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
- 1000
- 1001
- 1002
- 1003
- 1004
- 1005
- 1006
- 1007
- 1008
- 1009
- 1010
- 1011
- 1012
- 1013
- 1014
- 1015
- 1016
- 1017
- 1018
- 1019
- 1020
- 1021
- 1022
- 1023
- 1024
- 1025
- 1026
- 1027
- 1028
- 1029
- 1030
- 1031
- 1032
- 1033
- 1034
- 1035
- 1036
- 1037
- 1038
- 1039
- 1040
- 1041
- 1042
- 1043
- 1044
- 1045
- 1046
- 1047
- 1048
- 1049
- 1050
- 1051
- 1052
- 1053
- 1054
- 1055
- 1056
- 1057
- 1058
- 1059
- 1060
- 1061
- 1062
- 1063
- 1064
- 1065
- 1066
- 1067
- 1068
- 1069
- 1070
- 1071
- 1072
- 1073
- 1074
- 1075
- 1076
- 1077
- 1078
- 1079
- 1080
- 1081
- 1082
- 1083
- 1084
- 1085
- 1086
- 1087
- 1088
- 1089
- 1090
- 1091
- 1092
- 1093
- 1094
- 1095
- 1096
- 1097
- 1098
- 1099
- 1100
- 1101
- 1102
- 1103
- 1104
- 1105
- 1106
- 1107
- 1108
- 1109
- 1110
- 1111
- 1112
- 1113
- 1114
- 1115
- 1116
- 1117
- 1118
- 1119
- 1120
- 1121
- 1122
- 1123
- 1124
- 1125
- 1126
- 1127
- 1128
- 1129
- 1130
- 1131
- 1132
- 1133
- 1134
- 1135
- 1136
- 1137
- 1138
- 1139
- 1140
- 1141
- 1142
- 1143
- 1144
- 1145
- 1146
- 1147
- 1148
- 1149
- 1150
- 1151
- 1152
- 1153
- 1154
- 1155
- 1156
- 1157
- 1158
- 1159
- 1160
- 1161
- 1162
- 1163
- 1164
- 1165
- 1166
- 1167
- 1168
- 1169
- 1170
- 1171
- 1172
- 1173
- 1174
- 1175
- 1176
- 1177
- 1178
- 1179
- 1180
- 1181
- 1182
- 1183
- 1184
- 1185
- 1186
- 1187
- 1188
- 1189
- 1190
- 1191
- 1192
- 1193
- 1194
- 1195
- 1196
- 1197
- 1198
- 1199
- 1200
- 1201
- 1202
- 1203
- 1204
- 1205
- 1206
- 1207
- 1208
- 1209
- 1210
- 1211
- 1212
- 1213
- 1214
- 1215
- 1216
- 1217
- 1218
- 1219
- 1220
- 1221
- 1222
- 1223
- 1224
- 1225
- 1226
- 1227
- 1228
- 1229
- 1230
- 1231
- 1232
- 1233
- 1234
- 1235
- 1236
- 1237
- 1238
- 1239
- 1240
- 1241
- 1242
- 1243
- 1244
- 1245
- 1246
- 1247
- 1248
- 1249
- 1250
- 1251
- 1252
- 1253
- 1254
- 1255
- 1256
- 1257
- 1258
- 1259
- 1260
- 1261
- 1262
- 1263
- 1264
- 1265
- 1266
- 1267
- 1268
- 1269
- 1270
- 1271
- 1272
- 1273
- 1274
- 1275
- 1276
- 1277
- 1278
- 1279
- 1280
- 1281
- 1282
- 1283
- 1284
- 1285
- 1286
- 1287
- 1288
- 1289
- 1290
- 1291
- 1292
- 1293
- 1294
- 1295
- 1296
- 1297
- 1298
- 1299
- 1300
- 1301
- 1302
- 1303
- 1304
- 1305
- 1306
- 1307
- 1308
- 1309
- 1310
- 1311
- 1312
- 1313
- 1314
- 1315
- 1316
- 1317
- 1318
- 1319
- 1320
- 1321
- 1322
- 1323
- 1324
- 1325
- 1326
- 1327
- 1328
- 1329
- 1330
- 1331
- 1332
- 1333
- 1334
- 1335
- 1336
- 1337
- 1338
- 1339
- 1340
- 1341
- 1342
- 1343
- 1344
- 1345
- 1346
- 1347
- 1348
- 1349
- 1350
- 1351
- 1352
- 1353
- 1354
- 1355
- 1356
- 1357
- 1358
- 1359
- 1360
- 1361
- 1362
- 1363
- 1364
- 1365
- 1366
- 1367
- 1368
- 1369
- 1370
- 1371
- 1372
- 1373
- 1374
- 1375
- 1376
- 1377
- 1378
- 1379
- 1380
- 1381
- 1382
- 1383
- 1384
- 1385
- 1386
- 1387
- 1388
- 1389
- 1390
- 1391
- 1392
- 1393
- 1394
- 1395
- 1396
- 1397
- 1398
- 1399
- 1400
- 1401
- 1402
- 1403
- 1404
- 1405
- 1406
- 1407
- 1408
- 1409
- 1410
- 1411
- 1412
- 1413
- 1414
- 1415
- 1416
- 1417
- 1418
- 1419
- 1420
- 1421
- 1422
- 1423
- 1424
- 1425
- 1426
- 1427
- 1428
- 1429
- 1430
- 1431
- 1432
- 1433
- 1434
- 1435
- 1436
- 1437
- 1438
- 1439
- 1440
- 1441
- 1442
- 1443
- 1444
- 1445
- 1446
- 1447
- 1448
- 1449
- 1450
- 1451
- 1452
- 1453
- 1454
- 1455
- 1456
- 1457
- 1458
- 1459
- 1460
- 1461
- 1462
- 1463
- 1464
- 1465
- 1466
- 1467
- 1468
- 1469
- 1470
- 1471
- 1472
- 1473
- 1474
- 1475
- 1476
- 1477
- 1478
- 1479
- 1480
- 1481
- 1482
- 1483
- 1484
- 1485
- 1486
- 1487
- 1488
- 1489
- 1490
- 1491
- 1492
- 1493
- 1494
- 1495
- 1496
- 1497
- 1498
- 1499
- 1500
- 1501
- 1502
- 1503
- 1504
- 1505
- 1506
- 1507
- 1508
- 1509
- 1510
- 1511
- 1512
- 1513
- 1514
- 1515
- 1516
- 1517
- 1518
- 1519
- 1520
- 1521
- 1522
- 1523
- 1524
- 1525
- 1526
- 1527
- 1528
- 1529
- 1530
- 1531
- 1532
- 1533
- 1534
- 1535
- 1536
- 1537
- 1538
- 1539
- 1540
- 1541
- 1542
- 1543
- 1544
- 1545
- 1546
- 1547
- 1548
- 1549
- 1550
- 1551
- 1552
- 1553
- 1554
- 1555
- 1556
- 1557
- 1558
- 1559
- 1560
- 1561
- 1562
- 1563
- 1564
- 1565
- 1566
- 1567
- 1568
- 1569
- 1570
- 1571
- 1572
- 1573
- 1574
- 1575
- 1576
- 1577
- 1578
- 1579
- 1580
- 1581
- 1582
- 1583
- 1584
- 1585
- 1586
- 1587
- 1588
- 1589
- 1590
- 1591
- 1592
- 1593
- 1594
- 1595
- 1596
- 1597
- 1598
- 1599
- 1600
- 1601
- 1602
- 1603
- 1604
- 1605
- 1606
- 1607
- 1608
- 1609
- 1610
- 1611
- 1612
- 1613
- 1614
- 1615
- 1616
- 1617
- 1618
- 1619
- 1620
- 1621
- 1622
- 1623
- 1624
- 1625
- 1626
- 1627
- 1628
- 1629
- 1630
- 1631
- 1632
- 1633
- 1634
- 1635
- 1636
- 1637
- 1638
- 1639
- 1640
- 1641
- 1642
- 1643
- 1644
- 1645
- 1646
- 1647
- 1648
- 1649
- 1650
- 1651
- 1652
- 1653
- 1654
- 1655
- 1656
- 1657
- 1658
- 1659
- 1660
- 1661
- 1662
- 1663
- 1664
- 1665
- 1666
- 1667
- 1668
- 1669
- 1670
- 1671
- 1672
- 1673
- 1674
- 1675
- 1676
- 1677
- 1678
- 1679
- 1680
- 1681
- 1682
- 1683
- 1684
- 1685
- 1686
- 1687
- 1688
- 1689
- 1690
- 1691
- 1692
- 1693
- 1694
- 1695
- 1696
- 1697
- 1698
- 1699
- 1700
- 1701
- 1702
- 1703
- 1704
- 1705
- 1706
- 1707
- 1708
- 1709
- 1710
- 1711
- 1712
- 1713
- 1714
- 1715
- 1716
- 1717
- 1718
- 1719
- 1720
- 1721
- 1722
- 1723
- 1724
- 1725
- 1726
- 1727
- 1728
- 1729
- 1730
- 1731
- 1732
- 1733
- 1734
- 1735
- 1736
- 1737
- 1738
- 1739
- 1740
- 1741
- 1742
- 1743
- 1744
- 1745
- 1746
- 1747
- 1748
- 1749
- 1750
- 1751
- 1752
- 1753
- 1754
- 1755
- 1756
- 1757
- 1758
- 1759
- 1760
- 1761
- 1762
- 1763
- 1764
- 1765
- 1766
- 1767
- 1768
- 1769
- 1770
- 1771
- 1772
- 1773
- 1774
- 1775
- 1776
- 1777
- 1778
- 1779
- 1780
- 1781
- 1782
- 1783
- 1784
- 1785
- 1786
- 1787
- 1788
- 1789
- 1790
- 1791
- 1792
- 1793
- 1794
- 1795
- 1796
- 1797
- 1798
- 1799
- 1800
- 1801
- 1802
- 1803
- 1804
- 1805
- 1806
- 1807
- 1808
- 1809
- 1810
- 1811
- 1812
- 1813
- 1814
- 1815
- 1816
- 1817
- 1818
- 1819
- 1820
- 1821
- 1822
- 1823
- 1824
- 1825
- 1826
- 1827
- 1828
- 1829
- 1830
- 1831
- 1832
- 1833
- 1834
- 1835
- 1836
- 1837
- 1838
- 1839
- 1840
- 1841
- 1842
- 1843
- 1844
- 1845
- 1846
- 1847
- 1848
- 1849
- 1850
- 1851
- 1852
- 1853
- 1854
- 1855
- 1856
- 1857
- 1858
- 1859
- 1860
- 1861
- 1862
- 1863
- 1864
- 1865
- 1866
- 1867
- 1868
- 1869
- 1870
- 1871
- 1872
- 1873
- 1874
- 1875
- 1876
- 1877
- 1878
- 1879
- 1880
- 1881
- 1882
- 1883
- 1884
- 1885
- 1886
- 1887
- 1888
- 1889
- 1890
- 1891
- 1892
- 1893
- 1894
- 1895
- 1896
- 1897
- 1898
- 1899
- 1900
- 1901
- 1902
- 1903
- 1904
- 1905
- 1906
- 1907
- 1908
- 1909
- 1910
- 1911
- 1912
- 1913
- 1914
- 1915
- 1916
- 1917
- 1918
- 1919
- 1920
- 1921
- 1922
- 1923
- 1924
- 1925
- 1926
- 1927
- 1928
- 1929
- 1930
- 1931
- 1932
- 1933
- 1934
- 1935
- 1936
- 1937
- 1938
- 1939
- 1940
- 1941
- 1942
- 1943
- 1944
- 1945
- 1946
- 1947
- 1948
- 1949
- 1950
- 1951
- 1952
- 1953
- 1954
- 1955
- 1956
- 1957
- 1958
- 1959
- 1960
- 1961
- 1962
- 1963
- 1964
- 1965
- 1966
- 1967
- 1968
- 1969
- 1970
- 1971
- 1972
- 1973
- 1974
- 1975
- 1976
- 1977
- 1978
- 1979
- 1980
- 1981
- 1982
- 1983
- 1984
- 1985
- 1986
- 1987
- 1988
- 1989
- 1990
- 1991
- 1992
- 1993
- 1994
- 1995
- 1996
- 1997
- 1998
- 1999
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
- 2031
- 2032
- 2033
- 2034
- 2035
- 2036
- 2037
- 2038
- 2039
- 2040
- 2041
- 2042
- 2043
- 2044
- 2045
- 2046
- 2047
- 2048
- 2049
- 2050
- 2051
- 2052
- 2053
- 2054
- 2055
- 2056
- 2057
- 2058
- 2059
- 2060
- 2061
- 2062
- 2063
- 2064
- 2065
- 2066
- 2067
- 2068
- 2069
- 2070
- 2071
- 2072
- 2073
- 2074
- 2075
- 2076
- 2077
- 2078
- 2079
- 2080
- 2081
- 2082
- 2083
- 2084
- 2085
- 2086
- 2087
- 2088
- 2089
- 2090
- 2091
- 2092
- 2093
- 2094
- 2095
- 2096
- 2097
- 2098
- 2099
- 2100
- 2101
- 2102
- 2103
- 2104
- 2105
- 2106
- 2107
- 2108
- 2109
- 2110
- 2111
- 2112
- 2113
- 2114
- 2115
- 2116
- 2117
- 2118
- 2119
- 2120
- 2121
- 2122
- 2123
- 2124
- 2125
- 2126
- 2127
- 2128
- 2129
- 2130
- 2131
- 2132
- 2133
- 2134
- 2135
- 2136
- 2137
- 2138
- 2139
- 2140
- 2141
- 2142
- 2143
- 2144
- 2145
- 2146
- 2147
- 2148
- 2149
- 2150
- 2151
- 2152
- 2153
- 2154
- 2155
- 2156
- 2157
- 2158
- 2159
- 2160
- 2161
- 2162
- 2163
- 2164
- 2165
- 2166
- 2167
- 2168
- 2169
- 2170
- 2171
- 2172
- 2173
- 2174
- 2175
- 2176
- 2177
- 2178
- 2179
- 2180
- 2181
- 2182
- 2183
- 2184
- 2185
- 2186
- 2187
- 2188
- 2189
- 2190
- 2191
- 2192
- 2193
- 2194
- 2195
- 2196
- 2197
- 2198
- 2199
- 2200
- 2201
- 2202
- 2203
- 2204
- 2205
- 2206
- 2207
- 2208
- 2209
- 2210
- 2211
- 2212
- 2213
- 2214
- 2215
- 2216
- 2217
- 2218
- 2219
- 2220
- 2221
- 2222
- 2223
- 2224
- 2225
- 2226
- 2227
- 2228
- 2229
- 2230
- 2231
- 2232
- 2233
- 2234
- 2235
- 2236
- 2237
- 2238
- 2239
- 2240
- 2241
- 2242
- 2243
- 2244
- 2245
- 2246
- 2247
- 2248
- 2249
- 2250
- 2251
- 2252
- 2253
- 2254
- 2255
- 2256
- 2257
- 2258
- 2259
- 2260
- 2261
- 2262
- 2263
- 2264
- 2265
- 2266
- 2267
- 2268
- 2269
- 2270
- 2271
- 2272
- 2273
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2291
- 2292
- 2293
- 2294
- 2295
- 2296
- 2297
- 2298
- 2299
- 2300
- 2301
- 2302
- 2303
- 2304
- 2305
- 2306
- 2307
- 2308
- 2309
- 2310
- 2311
- 2312
- 2313
- 2314
- 2315
- 2316
- 2317
- 2318
- 2319
- 2320
- 2321
- 2322
- 2323
- 2324
- 2325
- 2326
- 2327
- 2328
- 2329
- 2330
- 2331
- 2332
- 2333
- 2334
- 2335
- 2336
- 2337
- 2338
- 2339
- 2340
- 2341
- 2342
- 2343
- 2344
- 2345
- 2346
- 2347
- 2348
- 2349
- 2350
- 2351
- 2352
- 2353
- 2354
- 2355
- 2356
- 2357
- 2358
- 2359
- 2360
- 2361
- 2362
- 2363
- 2364
- 2365
- 2366
- 2367
- 2368
- 2369
- 2370
- 2371
- 2372
- 2373
- 2374
- 2375
- 2376
- 2377
- 2378
- 2379
- 2380
- 2381
- 2382
- 2383
- 2384
- 2385
- 2386
- 2387
- 2388
- 2389
- 2390
- 2391
- 2392
- 2393
- 2394
- 2395
- 2396
- 2397
- 2398
- 2399
- 2400
- 2401
- 2402
- 2403
- 2404
- 2405
- 2406
- 2407
- 2408
- 2409
- 2410
- 2411
- 2412
- 2413
- 2414
- 2415
- 2416
- 2417
- 2418
- 2419
- 2420
- 2421
- 2422
- 2423
- 2424
- 2425
- 2426
- 2427
- 2428
- 2429
- 2430
- 2431
- 2432
- 2433
- 2434
- 2435
- 2436
- 2437
- 2438
- 2439
- 2440
- 2441
- 2442
- 2443
- 2444
- 2445
- 2446
- 2447
- 2448
- 2449
- 2450
- 2451
- 2452
- 2453
- 2454
- 2455
- 2456
- 2457
- 2458
- 2459
- 2460
- 2461
- 2462
- 2463
- 2464
- 2465
- 2466
- 2467
- 2468
- 2469
- 2470
- 2471
- 2472
- 2473
- 2474
- 2475
- 2476
- 2477
- 2478
- 2479
- 2480
- 2481
- 2482
- 2483
- 2484
- 2485
- 2486
- 2487
- 2488
- 2489
- 2490
- 2491
- 2492
- 2493
- 2494
- 2495
- 2496
- 2497
- 2498
- 2499
- 2500
- 2501
- 2502
- 2503
- 2504
- 2505
- 2506
- 2507
- 2508
- 2509
- 2510
- 2511
- 2512
- 2513
- 2514
- 2515
- 2516
- 2517
- 2518
- 2519
- 2520
- 2521
- 2522
- 2523
- 2524
- 2525
- 2526
- 2527
- 2528
- 2529
- 2530
- 2531
- 2532
- 2533
- 2534
- 2535
- 2536
- 2537
- 2538
- 2539
- 2540
- 2541
- 2542
- 2543
- 2544
- 2545
- 2546
- 2547
- 2548
- 2549
- 2550
- 2551
- 2552
- 2553
- 2554
- 2555
- 2556
- 2557
- 2558
- 2559
- 2560
- 2561
- 2562
- 2563
- 2564
- 2565
- 2566
- 2567
- 2568
- 2569
- 2570
- 2571
- 2572
- 2573
- 2574
- 2575
- 2576
- 2577
- 2578
- 2579
- 2580
- 2581
- 2582
- 2583
- 2584
- 2585
- 2586
- 2587
- 2588
- 2589
- 2590
- 2591
- 2592
- 2593
- 2594
- 2595
- 2596
- 2597
- 2598
- 2599
- 2600
- 2601
- 2602
- 2603
- 2604
- 2605
- 2606
- 2607
- 2608
- 2609
- 2610
- 2611
- 2612
- 2613
- 2614
- 2615
- 2616
- 2617
- 2618
- 2619
- 2620
- 2621
- 2622
- 2623
- 2624
- 2625
- 2626
- 2627
- 2628
- 2629
- 2630
- 2631
- 2632
- 2633
- 2634
- 2635
- 2636
- 2637
- 2638
- 2639
- 2640
- 2641
- 2642
- 2643
- 2644
- 2645
- 2646
- 2647
- 2648
- 2649
- 2650
- 2651
- 2652
- 2653
- 2654
- 2655
- 2656
- 2657
- 2658
- 2659
- 2660
- 2661
- 2662
- 2663
- 2664
- 2665
- 2666
- 2667
- 2668
- 2669
- 2670
- 2671
- 2672
- 2673
- 2674
- 2675
- 2676
- 2677
- 2678
- 2679
- 2680
- 2681
- 2682
- 2683
- 2684
- 2685
- 2686
- 2687
- 2688
- 2689
- 2690
- 2691
- 2692
- 2693
- 2694
- 2695
- 2696
- 2697
- 2698
- 2699
- 2700
- 2701
- 2702
- 2703
- 2704
- 2705
- 2706
- 2707
- 2708
- 2709
- 2710
- 2711
- 2712
- 2713
- 2714
- 2715
- 2716
- 2717
- 2718
- 2719
- 2720
- 2721
- 2722
- 2723
- 2724
- 2725
- 2726
- 2727
- 2728
- 2729
- 2730
- 2731
- 2732
- 2733
- 2734
- 2735
- 2736
- 2737
- 2738
- 2739
- 2740
- 2741
- 2742
- 2743
- 2744
- 2745
- 2746
- 2747
- 2748
- 2749
- 2750
- 2751
- 2752
- 2753
- 2754
- 2755
- 2756
- 2757
- 2758
- 2759
- 2760
- 2761
- 2762
- 2763
- 2764
- 2765
- 2766
- 2767
- 2768
- 2769
- 2770
- 2771
- 2772
- 2773
- 2774
- 2775
- 2776
- 2777
- 2778
- 2779
- 2780
- 2781
- 2782
- 2783
- 2784
- 2785
- 2786
- 2787
- 2788
- 2789
- 2790
- 2791
- 2792
- 2793
- 2794
- 2795
- 2796
- 2797
- 2798
- 2799
- 2800
- 2801
- 2802
- 2803
- 2804
- 2805
- 2806
- 2807
- 2808
- 2809
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2816
- 2817
- 2818
- 2819
- 2820
- 2821
- 2822
- 2823
- 2824
- 2825
- 2826
- 2827
- 2828
- 2829
- 2830
- 2831
- 2832
- 2833
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2844
- 2845
- 2846
- 2847
- 2848
- 2849
- 2850
- 2851
- 2852
- 2853
- 2854
- 2855
- 2856
- 2857
- 2858
- 2859
- 2860
- 2861
- 2862
- 2863
- 2864
- 2865
- 2866
- 2867
- 2868
- 2869
- 2870
- 2871
- 2872
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2890
- 2891
- 2892
- 2893
- 2894
- 2895
- 2896
- 2897
- 2898
- 2899
- 2900
- 2901
- 2902
- 2903
- 2904
- 2905
- 2906
- 2907
- 2908
- 2909
- 2910
- 2911
- 2912
- 2913
- 2914
- 2915
- 2916
- 2917
- 2918
- 2919
- 2920
- 2921
- 2922
- 2923
- 2924
- 2925
- 2926
- 2927
- 2928
- 2929
- 2930
- 2931
- 2932
- 2933
- 2934
- 2935
- 2936
- 2937
- 2938
- 2939
- 2940
- 2941
- 2942
- 2943
- 2944
- 2945
- 2946
- 2947
- 2948
- 2949
- 2950
- 2951
- 2952
- 2953
- 2954
- 2955
- 2956
- 2957
- 2958
- 2959
- 2960
- 2961
- 2962
- 2963
- 2964
- 2965
- 2966
- 2967
- 2968
- 2969
- 2970
- 2971
- 2972
- 2973
- 2974
- 2975
- 2976
- 2977
- 2978
- 2979
- 2980
- 2981
- 2982
- 2983
- 2984
- 2985
- 2986
- 2987
- 2988
- 2989
- 2990
- 2991
- 2992
- 2993
- 2994
- 2995
- 2996
- 2997
- 2998
- 2999
- 3000
- 3001
- 3002
- 3003
- 3004
- 3005
- 3006
- 3007
- 3008
- 3009
- 3010
- 3011
- 3012
- 3013
- 3014
- 3015
- 3016
- 3017
- 3018
- 3019
- 3020
- 3021
- 3022
- 3023
- 3024
- 3025
- 3026
- 3027
- 3028
- 3029
- 3030
- 3031
- 3032
- 3033
- 3034
- 3035
- 3036
- 3037
- 3038
- 3039
- 3040
- 3041
- 3042
- 3043
- 3044
- 3045
- 3046
- 3047
- 3048
- 3049
- 3050
- 3051
- 3052
- 3053
- 3054
- 3055
- 3056
- 3057
- 3058
- 3059
- 3060
- 3061
- 3062
- 3063
- 3064
- 3065
- 3066
- 3067
- 3068
- 3069
- 3070
- 3071
- 3072
- 3073
- 3074
- 3075
- 3076
- 3077
- 3078
- 3079
- 3080
- 3081
- 3082
- 3083
- 3084
- 3085
- 3086
- 3087
- 3088
- 3089
- 3090
- 3091
- 3092
- 3093
- 3094
- 3095
- 3096
- 3097
- 3098
- 3099
- 3100
- 3101
- 3102
- 3103
- 3104
- 3105
- 3106
- 3107
- 3108
- 3109
- 3110
- 3111
- 3112
- 3113
- 3114
- 3115
- 3116
- 3117
- 3118
- 3119
- 3120
- 3121
- 3122
- 3123
- 3124
- 3125
- 3126
- 3127
- 3128
- 3129
- 3130
- 3131
- 3132
- 3133
- 3134
- 3135
- 3136
- 3137
- 3138
- 3139
- 3140
- 3141
- 3142
- 3143
- 3144
- 3145
- 3146
- 3147
- 3148
- 3149
- 3150
- 3151
- 3152
- 3153
- 3154
- 3155
- 3156
- 3157
- 3158
- 3159
- 3160
- 3161
- 3162
- 3163
- 3164
- 3165
- 3166
- 3167
- 3168
- 3169
- 3170
- 3171
- 3172
- 3173
- 3174
- 3175
- 3176
- 3177
- 3178
- 3179
- 3180
- 3181
- 3182
- 3183
- 3184
- 3185
- 3186
- 3187
- 3188
- 3189
- 3190
- 3191
- 3192
- 3193
- 3194
- 3195
- 3196
- 3197
- 3198
- 3199
- 3200
- 3201
- 3202
- 3203
- 3204
- 3205
- 3206
- 3207
- 3208
- 3209
- 3210
- 3211
- 3212
- 3213
- 3214
- 3215
- 3216
- 3217
- 3218
- 3219
- 3220
- 3221
- 3222
- 3223
- 3224
- 3225
- 3226
- 3227
- 3228
- 3229
- 3230
- 3231
- 3232
- 3233
- 3234
- 3235
- 3236
- 3237
- 3238
- 3239
- 3240
- 3241
- 3242
- 3243
- 3244
- 3245
- 3246
- 3247
- 3248
- 3249
- 3250
- 3251
- 3252
- 3253
- 3254
- 3255
- 3256
- 3257
- 3258
- 3259
- 3260
- 3261
- 3262
- 3263
- 3264
- 3265
- 3266
- 3267
- 3268
- 3269
- 3270
- 3271
- 3272
- 3273
- 3274
- 3275
- 3276
- 3277
- 3278
- 3279
- 3280
- 3281
- 3282
- 3283
- 3284
- 3285
- 3286
- 3287
- 3288
- 3289
- 3290
- 3291
- 3292
- 3293
- 3294
- 3295
- 3296
- 3297
- 3298
- 3299
- 3300
- 3301
- 3302
- 3303
- 3304
- 3305
- 3306
- 3307
- 3308
- 3309
- 3310
- 3311
- 3312
- 3313
- 3314
- 3315
- 3316
- 3317
- 3318
- 3319
- 3320
- 3321
- 3322
- 3323
- 3324
- 3325
- 3326
- 3327
- 3328
- 3329
- 3330
- 3331
- 3332
- 3333
- 3333
推荐文章