云服务器内容精选

  • 调优策略 最常见告警 长时间低(高)于阈值线告警,如图1所示。 图1 常见告警 告警进入条件:一般8分钟内有7个点异常告警进入。 告警退出条件:20分钟内有18个点正常则告警退出。 调优方法: 调节sensitivity敏感度参数,可以使小幅度下降的异常不告警,针对阈值线过紧的情况,图1的异常通过敏感度调节不了,因为阈值线相对是合理的 配置count_threshold参数,如果不关注请求量很少的异常,可以配置该参数,建议非必要情况下不要配置该参数,可能会出现遗漏告警的情况。 毛刺告警 两三个显著的毛刺点异常,如图2所示。 图2 毛刺告警 告警进入条件:穿过阈值线的毛刺异常程度,最快在第2个毛刺点告警。 告警退出条件:20分钟内有18个点正常则告警退出。 调优方法: 如果对请求量很少的接口,毛刺异常不关注,可以配置low_count_threshold参数,如图2中告警的曲线请求量不超过30,可以配置改参数为30。 如果不管请求量多少,都不需要毛刺类告警,则可以配置alert_by_spikes参数。毛刺类告警最快可以将告警时间缩短为2分钟,如果屏蔽掉这类告警,则按照其他的告警类型会有一定的延迟(一般7分钟)。 突变告警 突变告警只针对请求量类指标,特点是请求量曲线发生突变(突增或者突降)同时指标曲线没有触及阈值线,如图3所示。 图3 突变告警 告警进入条件:局部看曲线发生突变(默认突变20%),或者长期看相比历史降低或升高。 告警退出条件:数据平稳后告警退出,一般会持续18分钟。 调优方法: 通过配置alert_by_chain参数可以控制是否加入突变检测。突变告警可以防止阈值线学习宽松条件下指标突变的漏告警,但对于不关注阈值线之上数据突变的指标会产生一些不必要的告警。 波动性告警 波动性告警只针对非请求量类指标,这类告警的特点是指标曲线没有触及阈值线,如图4所示。 图4 波动性告警 告警进入条件:局部看曲线波动变大,或者长期看相比历史数据持续降低或升高。 告警退出条件:数据恢复到历史同期水平,持续18分钟则告警退出。 调优方法: 对于小幅度的波动和下降(上升)告警可以通过调节sensitivity敏感度来减少部分告警。 如果不关注这类异常,可以通过配置alert_by_std参数来实现。波动性告警可以防止阈值线学习宽松条件下指标小幅波动的漏告警,但对于不关注阈值线之上数据波动的指标会产生一些不必要的告警。 长时间掉0告警 长时间掉0告警只针对请求量类指标,特点是阈值线为0,测量值长时间掉0,如图5所示。 图5 长时间掉0告警 告警进入条件:历史同时期没有掉0,或者掉0时间持续28分钟。 告警退出条件:数据恢复到正常水平则告警退出。 调优方法: 如果这类告警频繁出现,可以通过配置alert_by_drop_to_0参数屏蔽。长时间掉0告警可以防止阈值线为零的情况下指标长时间掉零的漏告警。
  • 配置方法 在“异常检测”页面,单击异常检测任务所在行“操作”列的“模型”,默认显示“算法配置”页签,参考表1配置参数。 表1 算法配置参数说明 参数名称 参数含义 取值范围 参数说明 配置建议 metric_type 指标类型 success_rate(成功率) fail_rate(失败率) count(请求量,做上下限告警) speed(速率) delay(时延) count_lowerlimit(请求量,做下限告警) count_upperlimit(请求量,做上限告警) 按照实际的指标类型选择该参数,对于请求量类指标,做下限告警的选择count_lowerlimit,不要选择count。 - sensitivity 敏感度 0-10 默认值5 敏感度参数越高,阈值线越紧;敏感度参数越低,阈值线越松。 敏感度参数最高不超过5.5,最低不低于3.5;一般配置4.5或者5。 请求量指标因为使用了新的算法,敏感度可以在0.5—5之间调节。 时延、请求量、速率类指标敏感度每降低0.5,阈值线相对浮动3%,绝对浮动3。 成功率、失败率指标敏感度每降低0.5,阈值线相对浮动0.3%,绝对浮动0.3%。 low_count_threshold 小请求量 0- 100000000 默认值0 请求量低于此参数值时毛刺告警、波动性不生效;其他类型的告警依然生效。 如果毛刺告警较多,可以配置该参数。 count_threshold 请求量保护 0-100000000 默认值0 请求量低于此参数值时,完全不告警。 一般情况下不建议配置,请谨慎配置,且对请求量类指标不生效。 no_model_threshold_upper 无模型阈值上限 0-100000000 默认值100000000 无模型时配置的阈值上限(固定阈值线)。 对于新增的接口,因为没有历史数据,无法训练出该接口的模型,此时可以配置合适的值用来监控此类接口。 no_model_threshold_lower 无模型阈值下限 0-100000000 默认值0 无模型时配置的阈值下限(固定阈值线)。 对于新增的接口,因为没有历史数据,无法训练出该接口的模型,此时可以配置合适的值用来监控此类接口。 alert_by_std 波动性告警 True/False 默认为True 非请求量类指标参数,通过该参数设置是否引入波动性告警。 - alert_by_chain 突变告警 True/False 默认为True 请求量类指标参数,通过该参数设置是否引入突变告警。 - alert_by_drop_to_0 长时间掉0告警 True/False 默认为True 请求量类指标参数,通过该参数设置是否引入长时间掉0告警。 - alert_by_spikes 毛刺告警 True/False 默认为True 所有指标参数,通过该参数设置是否引入毛刺告警。 -
  • 调优策略 最常见告警 长时间低(高)于阈值线告警,如图1所示。 图1 常见告警 告警进入条件:一般8分钟内有7个点异常告警进入。 告警退出条件:20分钟内有18个点正常则告警退出。 调优方法: 调节sensitivity敏感度参数,可以使小幅度下降的异常不告警,针对阈值线过紧的情况,图1的异常通过敏感度调节不了,因为阈值线相对是合理的 配置count_threshold参数,如果不关注请求量很少的异常,可以配置该参数,建议非必要情况下不要配置该参数,可能会出现遗漏告警的情况。 毛刺告警 两三个显著的毛刺点异常,如图2所示。 图2 毛刺告警 告警进入条件:穿过阈值线的毛刺异常程度,最快在第2个毛刺点告警。 告警退出条件:20分钟内有18个点正常则告警退出。 调优方法: 如果对请求量很少的接口,毛刺异常不关注,可以配置low_count_threshold参数,如图2中告警的曲线请求量不超过30,可以配置改参数为30。 如果不管请求量多少,都不需要毛刺类告警,则可以配置alert_by_spikes参数。毛刺类告警最快可以将告警时间缩短为2分钟,如果屏蔽掉这类告警,则按照其他的告警类型会有一定的延迟(一般7分钟)。 突变告警 突变告警只针对请求量类指标,特点是请求量曲线发生突变(突增或者突降)同时指标曲线没有触及阈值线,如图3所示。 图3 突变告警 告警进入条件:局部看曲线发生突变(默认突变20%),或者长期看相比历史降低或升高。 告警退出条件:数据平稳后告警退出,一般会持续18分钟。 调优方法: 通过配置alert_by_chain参数可以控制是否加入突变检测。突变告警可以防止阈值线学习宽松条件下指标突变的漏告警,但对于不关注阈值线之上数据突变的指标会产生一些不必要的告警。 波动性告警 波动性告警只针对非请求量类指标,这类告警的特点是指标曲线没有触及阈值线,如图4所示。 图4 波动性告警 告警进入条件:局部看曲线波动变大,或者长期看相比历史数据持续降低或升高。 告警退出条件:数据恢复到历史同期水平,持续18分钟则告警退出。 调优方法: 对于小幅度的波动和下降(上升)告警可以通过调节sensitivity敏感度来减少部分告警。 如果不关注这类异常,可以通过配置alert_by_std参数来实现。波动性告警可以防止阈值线学习宽松条件下指标小幅波动的漏告警,但对于不关注阈值线之上数据波动的指标会产生一些不必要的告警。 长时间掉0告警 长时间掉0告警只针对请求量类指标,特点是阈值线为0,测量值长时间掉0,如图5所示。 图5 长时间掉0告警 告警进入条件:历史同时期没有掉0,或者掉0时间持续28分钟。 告警退出条件:数据恢复到正常水平则告警退出。 调优方法: 如果这类告警频繁出现,可以通过配置alert_by_drop_to_0参数屏蔽。长时间掉0告警可以防止阈值线为零的情况下指标长时间掉零的漏告警。
  • 配置方法 在“异常检测”页面,单击异常检测任务所在行“操作”列的“模型”,默认显示“算法配置”页签,参考表1配置参数。 表1 算法配置参数说明 参数名称 参数含义 取值范围 参数说明 配置建议 metric_type 指标类型 success_rate(成功率) fail_rate(失败率) count(请求量,做上下限告警) speed(速率) delay(时延) count_lowerlimit(请求量,做下限告警) count_upperlimit(请求量,做上限告警) 按照实际的指标类型选择该参数,对于请求量类指标,做下限告警的选择count_lowerlimit,不要选择count。 - sensitivity 敏感度 0-10 默认值5 敏感度参数越高,阈值线越紧;敏感度参数越低,阈值线越松。 敏感度参数最高不超过5.5,最低不低于3.5;一般配置4.5或者5。 请求量指标因为使用了新的算法,敏感度可以在0.5—5之间调节。 时延、请求量、速率类指标敏感度每降低0.5,阈值线相对浮动3%,绝对浮动3。 成功率、失败率指标敏感度每降低0.5,阈值线相对浮动0.3%,绝对浮动0.3%。 low_count_threshold 小请求量 0- 100000000 默认值0 请求量低于此参数值时毛刺告警、波动性不生效;其他类型的告警依然生效。 如果毛刺告警较多,可以配置该参数。 count_threshold 请求量保护 0-100000000 默认值0 请求量低于此参数值时,完全不告警。 一般情况下不建议配置,请谨慎配置,且对请求量类指标不生效。 no_model_threshold_upper 无模型阈值上限 0-100000000 默认值100000000 无模型时配置的阈值上限(固定阈值线)。 对于新增的接口,因为没有历史数据,无法训练出该接口的模型,此时可以配置合适的值用来监控此类接口。 no_model_threshold_lower 无模型阈值下限 0-100000000 默认值0 无模型时配置的阈值下限(固定阈值线)。 对于新增的接口,因为没有历史数据,无法训练出该接口的模型,此时可以配置合适的值用来监控此类接口。 alert_by_std 波动性告警 True/False 默认为True 非请求量类指标参数,通过该参数设置是否引入波动性告警。 - alert_by_chain 突变告警 True/False 默认为True 请求量类指标参数,通过该参数设置是否引入突变告警。 - alert_by_drop_to_0 长时间掉0告警 True/False 默认为True 请求量类指标参数,通过该参数设置是否引入长时间掉0告警。 - alert_by_spikes 毛刺告警 True/False 默认为True 所有指标参数,通过该参数设置是否引入毛刺告警。 -
  • 准备数据 单击下载动物数据集至本地,并解压。 通过obsutil将数据集上传至OBS桶中。 ./obsutil cp ./dog_cat_1w obs://${your_obs_buck}/demo/ -f -r OBS支持多种文件上传方式,当文件少于100个时,可以在OBS Console中上传,当文件大于100个时,推荐使用工具,推荐OBS Browser+(win)、obsutil(linux)。上述例子为obsutil使用方法。
  • 购买弹性云服务器ECS 如果您需要在服务器上部署相关业务,较之物理服务器,弹性云服务器的创建成本较低,并且可以在几分钟之内快速获得基于云服务平台的弹性云服务器设施,并且这些基础设施是弹性的,可以根据需求伸缩。下面介绍如何在管理控制台购买弹性云服务器。 购买流程: 步骤一:基础配置 步骤二:网络配置 步骤三:高级配置 步骤四:确认订单 购买时需注意,ECS需要和SFS买到同一个VPC才能挂载SFS存储。
  • Step1 创建OBS桶和文件夹 在OBS服务中创建桶和文件夹,用于存放样例数据集以及训练代码。需要创建的文件夹列表如表1所示,示例中的桶名称“test-modelarts” 和文件夹名称均为举例,请替换为用户自定义的名称。 创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。 请确保您使用的OBS与ModelArts在同一区域。 表1 OBS桶文件夹列表 文件夹名称 用途 “obs://test-modelarts/mindspore-gpu/resnet/” 用于存储训练脚本文件。 “obs://test-modelarts/mindspore-gpu/cifar-10-batches-bin/” 用于存储数据集文件。 “obs://test-modelarts/mindspore-gpu/output/” 用于存储训练输出文件。 “obs://test-modelarts/mindspore-gpu/log/” 用于存储训练日志文件。
  • Step3 查看精度测试结果 默认情况下,评测结果会按照result/{service_name}/{eval_dataset}-{timestamp} 的目录结果保存到对应的测试工程。执行多少次,则会在{service_name}下生成多少次结果。 单独的评测结果如下: {eval_dataset}-{timestamp} # 例如: mmlu-20240205093257 ├── accuracy │ ├── evaluation_accuracy.xlsx # 测试的评分结果,包含各个学科数据集的评分和总和评分。 ├── infer_info │ ├── xxx1.csv # 单个数据集的评测结果 │ ├── ...... │ ├── xxxn.csv # 单个数据集的评测结果 ├── summary_result │ ├── answer_correct.xlsx # 回答正确的结果 │ ├── answer_error.xlsx # 保存回答了问题的选项,但是回答结果错误 │ ├── answer_result_unknow.xlsx # 保存未推理出结果的问题,例如超时、系统错误 │ ├── system_error.xlsx # 保存推理结果,但是可能答非所问,无法判断是否正确,需要人工判断进行纠偏。
  • Step1 准备数据集 精度测试需要数据集进行测试。推荐公共数据集mmlu和ceval。下载地址: 表1 精度测试数据集 数据集名称 下载地址 下载说明 mmlu https://huggingface.co/datasets/cais/mmlu 下载其中的data.tar解压到得到data文件夹,为表示区分,将data文件夹重命名为mmlu-exam。 ceval https://huggingface.co/datasets/ceval/ceval-exam 下载其中的ceval-exam.zip压缩包,解压到ceval-exam文件夹。
  • Step2 配置精度测试环境 获取精度测试代码。精度测试代码存放在代码包AscendCloud-3rdLLM-x.x.x的/llm_evaluation目录中,代码目录结构如下: benchmark_eval ├──apig_sdk # ma校验包 ├──cpu_npu # 检测资源消耗 ├── config │ ├── config.json # 服务的配置模板,已配置了ma-standard,tgi示例 │ ├── mmlu_subject_mapping.json # mmlu数据集学科信息 │ ├── ceval_subject_mapping.json # ceval数据集学科信息 ├── evaluators │ ├── evaluator.py # 数据集数据预处理方法集 │ ├── chatglm.py # 处理请求相应模块, 一般和chatglm的官方评测数据集ceval搭配 │ ├── llama.py # 处理请求相应模块, 一般和llama的评测数据集mmlu搭配 ├── mmlu-exam, mmlu数据集 ├── ceval-exam, ceval数据集 ├── eval_test.py # 启动脚本,建立线程池发送请求,并汇总结果 ├── readme.md # 说明文档 ├── requirements.txt # 第三方依赖 ├── service_predict.py # 发送请求的服务 上传精度测试代码到推理容器中。 执行精度测试启动脚本eval_test.py,具体操作命令如下,可以根据参数说明修改参数。 python eval_test.py \ --max_workers=1 \ --service_name=llama2-13b-chat-test \ --eval_dataset=ceval \ --service_url=http://127.0.0.1:8085/v1/completions \ --few_shot=3 \ --is_devserver=True \ --model_name=llama2 \ --deploy_method=vllm \ --vllm_model=${model} 参数说明: max_workers:请求的最大线程数,默认为1。 service_name:服务名称,保存评测结果时创建目录,示例为:llama2-13b-chat-test。 eval_dataset:评测使用的评测集(枚举值),目前仅支持mmlu、ceval。 service_url:成功部署推理服务后的服务预测地址,示例:http://127.0.0.1:8085/generate。此处的端口号8085来自前面配置的服务端口。 few_shot:开启少量样本测试后添加示例样本的个数。默认为3,取值范围为0~5整数。 is_devserver: 是否devserver部署方式,True表示DevServer模式。False表示ModelArts Standard模式。 model_name:评测模型名称,llama2。 deploy_method:部署方法,不同的部署方式api参数输入、输出解析方式不同,目前支持tgi、ma_standard、vllm等方式。 vllm_model:deploy_method为vllm时,服务以openai的方式启动,vllm_model为启动服务时传入的model。
  • Step1 创建OBS桶和文件夹 在OBS服务中创建桶和文件夹,用于存放样例数据集以及训练代码。需要创建的文件夹列表如表1所示,示例中的桶名称“test-modelarts” 和文件夹名称均为举例,请替换为用户自定义的名称。 创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。 请确保您使用的OBS与ModelArts在同一区域。 表1 OBS桶文件夹列表 文件夹名称 用途 “obs://test-modelarts/mpi/demo-code/” 用于存储MPI启动脚本与训练脚本文件。 “obs://test-modelarts/mpi/log/” 用于存储训练日志文件。
  • Step5 上传镜像至SWR服务 登录容器镜像服务控制台,选择区域,要和ModelArts区域保持一致,否则无法选择到镜像。 单击右上角“创建组织”,输入组织名称完成组织创建。请自定义组织名称,本示例使用“deep-learning”,下面的命令中涉及到组织名称“deep-learning”也请替换为自定义的值。 单击右上角“登录指令”,获取登录访问指令,本文选择复制临时登录指令。 以root用户登录本地环境,输入复制的SWR临时登录指令。 上传镜像至容器镜像服务镜像仓库。 使用docker tag命令给上传镜像打标签。 #region和domain信息请替换为实际值,组织名称deep-learning也请替换为自定义的值。 sudo docker tag pytorch:1.8.1-cuda11.1 swr.{region-id}.{domain}/deep-learning/pytorch:1.8.1-cuda11.1 #此处以华为云cn-north-4为例 sudo docker tag pytorch:1.8.1-cuda11.1 swr.cn-north-4.myhuaweicloud.com/deep-learning/pytorch:1.8.1-cuda11.1 使用docker push命令上传镜像。 #region和domain信息请替换为实际值,组织名称deep-learning也请替换为自定义的值。 sudo docker push swr.{region-id}.{domain}/deep-learning/pytorch:1.8.1-cuda11.1 #此处以华为云cn-north-4为例 sudo docker push swr.cn-north-4.myhuaweicloud.com/deep-learning/pytorch:1.8.1-cuda11.1 完成镜像上传后,在容器镜像服务控制台的“我的镜像”页面可查看已上传的自定义镜像。 “swr.cn-north-4.myhuaweicloud.com/deep-learning/pytorch:1.8.1-cuda11.1”即为此自定义镜像的“SWR_URL”。
  • Step1 创建OBS桶和文件夹 在OBS服务中创建桶和文件夹,用于存放样例数据集以及训练代码。需要创建的文件夹列表如表1所示,示例中的桶名称“test-modelarts”和文件夹名称均为举例,请替换为用户自定义的名称。 创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。 请确保您使用的OBS与ModelArts在同一区域。 表1 OBS桶文件夹列表 文件夹名称 用途 “obs://test-modelarts/pytorch/demo-code/” 用于存储训练脚本文件。 “obs://test-modelarts/pytorch/log/” 用于存储训练日志文件。
  • Step2 准备训练脚本并上传至OBS 准备本案例所需的训练脚本“pytorch-verification.py”文件,并上传至OBS桶的“obs://test-modelarts/pytorch/demo-code/”文件夹下。 “pytorch-verification.py”文件内容如下: import torch import torch.nn as nn x = torch.randn(5, 3) print(x) available_dev = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu") y = torch.randn(5, 3).to(available_dev) print(y)
  • 模型软件包结构说明 本教程需要使用到的推理模型软件包和推理评测代码存放在如下目录中,关键文件介绍如下: xxx-Ascend #xxx表示版本号 ├──llm_evaluation #推理评测代码包 ├──benchmark_eval # 精度评测 ├── config ├── config.json # 请求的参数,根据实际启动的服务来调整 ├── mmlu_subject_mapping.json # 数据集配置 ├── evaluators ├── evaluator.py # 数据集数据预处理方法集 ├── model.py # 发送请求的模块,在这里修改请求响应。目前支持vllm.openai,atb的tgi模板 ├── eval_test.py # 启动脚本,建立线程池发送请求,并汇总结果 ├── service_predict.py # 发送请求的服务。支持vllm的openai,atb的tgi模板 ├── ... ├──benchmark_tools #性能评测 ├── benchmark.py # 可以基于默认的参数跑完静态benchmark和动态benchmark ├── benchmark_parallel.py # 评测静态性能脚本 ├── benchmark_serving.py # 评测动态性能脚本 ├── benchmark_utils.py # 抽离的工具集 ├── generate_datasets.py # 生成自定义数据集的脚本 ├── requirements.txt # 第三方依赖 ├── ... ├──llm_inference #推理代码 ├── ascend_vllm_adapter #昇腾vLLM使用的算子模块 ├── ascend.txt #基于开源vLLM适配过NPU的patch脚本 ├── build.sh #推理构建脚本 ├── requirements.txt # 第三方依赖