云服务器内容精选

  • 准备数据 单击下载动物数据集至本地,并解压。 通过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 # 第三方依赖
  • 支持的模型软件包和权重文件 本方案支持的模型列表、对应的开源权重获取地址如表1所示,模型对应的软件和依赖包获取地址如表2所示。 表1 支持的模型列表和权重获取地址 序号 模型名称 开源权重获取地址 1 llama-7b https://huggingface.co/huggyllama/llama-7b 2 llama-13b https://huggingface.co/huggyllama/llama-13b 3 llama-65b https://huggingface.co/huggyllama/llama-65b 4 llama2-7b https://huggingface.co/meta-llama/Llama-2-7b-chat-hf 5 llama2-13b https://huggingface.co/meta-llama/Llama-2-13b-chat-hf 6 llama2-70b https://huggingface.co/meta-llama/Llama-2-70b-hf https://huggingface.co/meta-llama/Llama-2-70b-chat-hf (推荐) 7 llama3-8b https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct 8 llama3-70b https://huggingface.co/meta-llama/Meta-Llama-3-70B-Instruct 9 yi-6b https://huggingface.co/01-ai/Yi-6B-Chat 10 yi-9b https://huggingface.co/01-ai/Yi-9B 11 yi-34b https://huggingface.co/01-ai/Yi-34B-Chat 12 deepseek-llm-7b https://huggingface.co/deepseek-ai/deepseek-llm-7b-chat 13 deepseek-coder-instruct-33b https://huggingface.co/deepseek-ai/deepseek-coder-33b-instruct 14 deepseek-llm-67b https://huggingface.co/deepseek-ai/deepseek-llm-67b-chat 15 qwen-7b https://huggingface.co/Qwen/Qwen-7B-Chat 16 qwen-14b https://huggingface.co/Qwen/Qwen-14B-Chat 17 qwen-72b https://huggingface.co/Qwen/Qwen-72B-Chat 18 qwen1.5-0.5b https://huggingface.co/Qwen/Qwen1.5-0.5B-Chat 19 qwen1.5-7b https://huggingface.co/Qwen/Qwen1.5-7B-Chat 20 qwen1.5-1.8b https://huggingface.co/Qwen/Qwen1.5-1.8B-Chat 21 qwen1.5-14b https://huggingface.co/Qwen/Qwen1.5-14B-Chat 22 qwen1.5-32b https://huggingface.co/Qwen/Qwen1.5-32B/tree/main 23 qwen1.5-72b https://huggingface.co/Qwen/Qwen1.5-72B-Chat 24 qwen1.5-110b https://huggingface.co/Qwen/Qwen1.5-110B-Chat 25 baichuan2-7b https://huggingface.co/baichuan-inc/Baichuan2-7B-Chat 26 baichuan2-13b https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat 27 chatglm2-6b https://huggingface.co/THUDM/chatglm2-6b 28 chatglm3-6b https://huggingface.co/THUDM/chatglm3-6b 29 gemma-2b https://huggingface.co/google/gemma-2b 30 gemma-7b https://huggingface.co/google/gemma-7b 31 mistral-7b https://huggingface.co/mistralai/Mistral-7B-v0.1 表2 模型对应的软件包和依赖包获取地址 软件名称 说明 下载地址 AscendCloud-3rdLLM-6.3.904-xxx.zip 说明: 软件包名称中的xxx表示时间戳。 包含了本教程中使用到的模型推理部署代码和推理评测代码。代码包具体说明请参见模型软件包结构说明。 获取路径:Support-E网站。 说明: 如果没有下载权限,请联系您所在企业的华为方技术支持下载获取。 AscendCloud-OPP-6.3.904-xxx.zip 推理依赖的算子包
  • 资源规格要求 本文档中的模型运行环境是ModelArts Lite的DevServer。推荐使用“西南-贵阳一”Region上的资源和Ascend Snt9B。 如果使用DevServer资源,请参考DevServer资源开通,购买DevServer资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。 当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。
  • 约束限制 本方案目前仅适用于企业客户。 资源规格推荐使用“西南-贵阳一”Region上的DevServer和昇腾Snt9B资源。 推理部署使用的服务框架是vLLM(官网地址:https://github.com/vllm-project/vllm/tree/v0.3.2,版本:v0.3.2)。本教程是基于vLLM的昇腾适配的推理方案部署指导,支持FP16和BF16数据类型推理。 推理镜像环境配套的CANN版本是cann_8.0.rc1,PyTorch版本是2.1.0。
  • Step4 运行并验证SDXL模型 首先在容器中运行命令。 cd /home/ma-user/stable-diffusion-webui source /usr/local/Ascend/ascend-toolkit/set_env.sh 在/home/ma-user目录下已经存在launch.py脚本文件,启动launch.py命令如下。 python3 launch.py --skip-torch-cuda-test --port 8183 --enable-insecure-extension-access --listen --log-startup --disable-safe-unpickle --skip-prepare-environment --api 启动成功后,打印如下信息。 图2 启动成功 使用http://{宿主机ip}:8183 可以访问前端页面,通过输入文字生成图片。 图3 文生图 注意开启fa优化按钮。 图4 开启fa优化按钮 如果使用涉黄文字,输出的图片会返回黑图,用于验证safety-checker功能。同时,服务端会打印如下信息。 图5 服务端返回信息 带controlnet运行,默认使用canny。 图6 带controlnet运行 可以观察到输出的图片与canny输入图片很相近,坐姿和样子比较符合,如下图所示。 图7 文生图 使用后台API调用文生图接口。 curl -kv -X POST localhost:8183/sdapi/v1/txt2img -H "Content-Type: application/json" -d '{"prompt":"a dog"}' 客户端返回图像的base64编码,将base64编码再转换为图片,转换代码如下。 from PIL import Image from io import BytesIO import base64 def base64_to_image(base64_str): image = base64.b64decode(base64_str, altchars=None, validate=False) image = BytesIO(image) image = Image.open(image) image.save("./out_put_image.png")