当前位置: 首页 > news >正文

网站内链 工具搜索引擎免费登录入口

网站内链 工具,搜索引擎免费登录入口,网站的建设方法包括什么作用,微信微网站是什么格式作者#xff1a;颜廷帅#xff08;瀚廷#xff09; 01 背景 OpenAI 在 3 月 15 日发布了备受瞩目的 GPT4#xff0c;它在司法考试和程序编程领域的惊人表现让大家对大语言模型的热情达到了顶点。人们纷纷议论我们是否已经跨入通用人工智能的时代。与此同时#xff0c;基…作者颜廷帅瀚廷 01 背景 OpenAI 在 3 月 15 日发布了备受瞩目的 GPT4它在司法考试和程序编程领域的惊人表现让大家对大语言模型的热情达到了顶点。人们纷纷议论我们是否已经跨入通用人工智能的时代。与此同时基于大语言模型的应用也如雨后春笋般出现为我们带来了协同办公、客服对话、语言翻译、内容生成等方面前所未有的畅快体验。 然而当我们享受着大语言模型带来的普惠 AI 能力时它也给开发者们带来了前所未有的挑战。随着模型不断增大计算量也达到了空前的高度直接导致推理时间变长。为了解决大语言模型推理的延迟问题业界已经提供了一些解决方案比如 Tensorrt、FasterTransformer 和 vllm。为了帮助用户解决云原生系统中的大语言模型推理加速问题云原生 AI 套件引入了 FasterTransformer 推理加速方案。 本文将在 ACK 容器服务上以 Bloom7B1 模型为例展示如何使用 FasterTransformer 进行推理加速。本例中会使用以下组件 Arena Arena 是基于 Kubernetes 的机器学习轻量级解决方案支持数据准备、模型开发模型训练、模型预测的完整生命周期提升数据科学家工作效率。同时和阿里云的基础云服务深度集成支持 GPU 共享、CPFS 等服务可以运行阿里云优化的深度学习框架最大化使用阿里云异构设备的性能和成本的效益。更多 arena 信息可以参考云原生 AI 套件开发者使用指南 [ 1] 。 Triton Server Triton Server为Nvidia 提供了机器学习推理引擎可以支持 Tensorflow、Pytorch、Tensorrt 和 Fastertransformer 多种 backend。云原生 AI 套件已经将 Triton Server 加入到 Arena 中用户可以通过简单的命令行或 SDK 来在云原生系统中完成 Triton Server 服务的拉起、运维和监控。更多 AI 套件中使用 Triton Server 信息可以参考部署 PyTorch 模型推理服务 [ 2] 。 FasterTransformer FasterTransformer 是真对于 Transofrmer 类型模型也包括 encoder-only、decoder-only的推理加速方案其提供了 Kernel Fuse、Memory reuse、kv cache、量化等多种优化方案同时也提供了 Tensor Parallel 和 Pipeline Parallel 两种分布式推理方案。本文将介绍如何在云原生 AI 套件中使用 FasterTransformer 进行模型的推理加速。 02 环境准备 环境准备分为两个部分第一个部分是创建包含 GPU 的 Kubernetes 集群 [ 3] 和安装云原生 AI 套件 [ 4] 第二个部分是从 huggingface 官网下载 bloom-7b1 模型。 模型的下载命令如下 git lfs install git clone githf.co:bigscience/bloom-7b1通过上面的命令可以将 huggingface repo 中的文件下载到本地 下载完成后我们将 bloom-71 文件夹上传到 OSS 中作为推理时的共享存储OSS 的使用可以参考开始使用 OSS [ 5] 。 上传到 OSS 之后分别创建名称为 bloom7b1-pv 和 bloom7b1-pvc 的 PV 和 PVC以用于推理服务的容器挂载。具体操作请参见使用 OSS 静态存储卷 [ 6] 。 03 模型转换 FasterTransformer 本质上是对模型的重写它通过 CUDA、cuDNN 和 cuBLAS 重写了 Transformer 模型结构因此其具有自己的模型结构和模型参数的描述方式。而我们的模型一般是通过 Pytorch、Tesorflow、Megatron 或 huggingface 这样的训练框架产出其往往又具有自己单独的一套模型结构和参数的表达因此在使用FasterTransformer时就需要将模型原有的 checkpoint 转换为 FasterTransformer 的结构。 FasterTransformer 中已经支持了多种类型的转换脚本这里我们使用 FasterTransofrmer 提供的 examples/pytorch/gpt/utils/huggingface_bloom_convert.py。 云原生 AI 套件已经接入了上述的转换逻辑因此通过如下脚本即可完成一次模型的转换。 arena submit pytorchjob\--gpus1\--image ai-studio-registry.cn-beijing.cr.aliyuncs.com/kube-ai/fastertransformer:torch-0.0.1\--name convert-bloom\--workers 1\--namespace default-group\--data bloom-pvc:/mnt\python /FasterTransformer/examples/pytorch/gpt/utils/huggingface_bloom_convert.py -i /mnt/model/bloom-7b1 -o /mnt/model/bloom-7b1-ft-fp16 -tp 2 -dt fp16 -p 64 -v通过 arena log 来观察转换的日志 $arena logs -n default-group convert-bloomArguments - input_dir...........: /mnt/model/bloom-7b1- output_dir..........: /mnt/model/bloom-7b1-ft-fp16- tensor_para_size....: 2- data_type...........: fp16- processes...........: 64- verbose.............: True- by_shard............: Falseloading from pytorch bin format model file num: 2- model.pre_decoder_layernorm.bias................: shape (4096,) | saved at /mnt/model/bloom-7b1-ft-fp16/2-gpu/model.pre_decoder_layernorm.bias.bin- model.layers.0.input_layernorm.weight...........: shape (4096,) | saved at /mnt/model/bloom-7b1-ft-fp16/2-gpu/model.layers.0.input_layernorm.weight.bin- model.layers.0.attention.dense.bias.............: shape (4096,) | saved at /mnt/model/bloom-7b1-ft-fp16/2-gpu/model.layers.0.attention.dense.bias.bin- model.layers.0.input_layernorm.bias.............: shape (4096,) | saved at /mnt/model/bloom-7b1-ft-fp16/2-gpu/model.layers.0.input_layernorm.bias.bin- model.layers.0.attention.query_key_value.bias...: shape (3, 2048) s | saved at /mnt/model/bloom-7b1-ft-fp16/2-gpu/model.layers.0.attention.query_key_value.bias.0.bin (0/2)- model.layers.0.post_attention_layernorm.weight..: shape (4096,) | saved at /mnt/model/bloom-7b1-ft-fp16/2-gpu/model.layers.0.post_attention_layernorm.weight.bin- model.layers.0.post_attention_layernorm.bias....: shape (4096,) | saved at /mnt/model/bloom-7b1-ft-fp16/2-gpu/model.layers.0.post_attention_layernorm.bias.bin- model.layers.0.mlp.dense_4h_to_h.bias...........: shape (4096,) | saved at /mnt/model/bloom-7b1-ft-fp16/2-gpu/model.layers.0.mlp.dense_4h_to_h.bias.bin- model.layers.0.mlp.dense_h_to_4h.bias...........: shape (8192,) s | saved at /mnt/model/bloom-7b1-ft-fp16/2-gpu/model.layers.0.mlp.dense_h_to_4h.bias.0.bin (0/2)- model.layers.0.attention.query_key_value.bias...: shape (3, 2048) s | saved at /mnt/model/bloom-7b1-ft-fp16/2-gpu/model.layers.0.attention.query_key_value.bias.1.bin (1/2)通过 arena list 命令查看转换是否执行结束 NAME STATUS TRAINER DURATION GPU(Requested) GPU(Allocated) NODE convert-bloom SUCCEEDED PYTORCHJOB 3m 1 N/A 192.168.123.35转换完成后会在 OSS 上创建一个 model/arena/bloom-7b1-ft-fp16 文件夹文件中会存储 FasterTransofrmer 所对应的 checkpoint。 04 性能对比 此时我们的 OSS 上已经有两份 bloom-7b1 checkpoint一份是 bloom-7b 文件夹存储了 huggingface 原生的 checkpoint另一份是 bloom-7b-ft-fp16 文件夹存储了转换后的 FasterTransformer 的 checkpoint。我们将使用这两份 checkpoint 进行性能对比看一下来 FasterTransformer 是否能够带来性能的提升。 性能对比使用 Fastertransformer 提供的 examples/pytorch/gpt/bloom_lambada.py我们也已经集成到了 AI 套件中。这里我们分别提交两个性能评测命令。对 Huggingface Bloom-7b1 评测的命令 arena submit pytorchjob\--gpus2\--image ai-studio-registry.cn-beijing.cr.aliyuncs.com/kube-ai/fastertransformer:torch-0.0.1\--name perf-hf-bloom \--workers 1\--namespace default-group\--data bloom7b1-pvc:/mnt\python /FasterTransformer/examples/pytorch/gpt/bloom_lambada.py \--tokenizer-path /mnt/model/bloom-7b1 \--dataset-path /mnt/data/lambada/lambada_test.jsonl \--batch-size 16 \--test-hf \--show-progress查看 HuggingFace 的结果 $arena -n default-group logs -t 5 perf-hf-bloom Accuracy: 57.5587% (2966/5153) (elapsed time: 173.2149 sec)对 Fastertransformer Blooom-7b 评测的命令 arena submit pytorchjob\--gpus2\--image ai-studio-registry.cn-beijing.cr.aliyuncs.com/kube-ai/fastertransformer:torch-0.0.1\--name perf-ft-bloom \--workers 1\--namespace default-group\--data bloom7b1-pvc:/mnt\mpirun --allow-run-as-root -n 2 python /FasterTransformer/examples/pytorch/gpt/bloom_lambada.py \--lib-path /FasterTransformer/build/lib/libth_transformer.so \--checkpoint-path /mnt/model/2-gpu \--batch-size 16 \--tokenizer-path /mnt/model/bloom-7b1 \--dataset-path /mnt/data/lambada/lambada_test.jsonl \--show-progress查看 FasterTransformer 的结果可以看见带来了 2.5 倍的性能提升。 $arena -n default-group logs -t 5 perf-ft-bloom Accuracy: 57.6363% (2970/5153) (elapsed time: 68.7818 sec)通过结果对比可以看见Fastertransformer 与原生的 Huggingface 相比有比较明显的性能提升。 05 模型部署 在这一小节我们使用 Triton Server 对 FasterTransformer 进行部署Triton Server 中原生并不支持 FasterTransformer 的 backend需要我们配合 Nvidia 提供的 Fastertransformer backend 来使用。通过使用 FasterTransformer backendTriton Server 不再进行 GPU 资源的分配FasterTransformer backend 会根据 CUDA_VISIBLE_DEVICES 判断当前可用 GPU 资源并分配给对应的 RANK 来执行分布式的推理。 FasterTransformer 对应的模型 Repo 目录如下所示 ├── model_repo │ └── fastertransformer │ ├── 1 │ │ └── config.ini │ └── config.pbtxt使用功能 Arena 的如下命令来启动 FasterTransformer arena serve triton \--namespacedefault-group \--version1 \--databloom7b1-pvc:/mnt \--nameft-triton-bloom \--allow-metrics \--gpus2 \--replicas1 \--imageai-studio-registry.cn-beijing.cr.aliyuncs.com/kube-ai/triton_with_ft:22.03-main-2edb257e-transformers \--model-repository/mnt/triton_repo通过 kubectl logs我们可以看到 triton server 的部署日志通过日志可以看到triton server 启动了两个 gpu 来进行分布式推理。 I0721 08:57:28.116291 1 pinned_memory_manager.cc:240] Pinned memory pool is created at 0x7fd264000000 with size 268435456 I0721 08:57:28.118393 1 cuda_memory_manager.cc:105] CUDA memory pool is created on device 0 with size 67108864 I0721 08:57:28.118403 1 cuda_memory_manager.cc:105] CUDA memory pool is created on device 1 with size 67108864 I0721 08:57:28.443529 1 model_lifecycle.cc:459] loading: fastertransformer:1 I0721 08:57:28.625253 1 libfastertransformer.cc:1828] TRITONBACKEND_Initialize: fastertransformer I0721 08:57:28.625307 1 libfastertransformer.cc:1838] Triton TRITONBACKEND API version: 1.10 I0721 08:57:28.625315 1 libfastertransformer.cc:1844] fastertransformer TRITONBACKEND API version: 1.10 I0721 08:57:28.627137 1 libfastertransformer.cc:1876] TRITONBACKEND_ModelInitialize: fastertransformer (version 1) I0721 08:57:28.628304 1 libfastertransformer.cc:372] Instance group type: KIND_CPU count: 1 I0721 08:57:28.628326 1 libfastertransformer.cc:402] Sequence Batching: disabled I0721 08:57:28.628334 1 libfastertransformer.cc:412] Dynamic Batching: disabled I0721 08:57:28.661657 1 libfastertransformer.cc:438] Before Loading Weights: --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | Backend | Path | Config | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | fastertransformer | /opt/tritonserver/backends/fastertransformer/libtriton_fastertransformer.so | {cmdline:{auto-complete-config:true,min-compute-capability:6.000000,backend-directory:/opt/tritonserver/backends,default-max-batch-size:4}} | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------I0721 09:01:19.653743 1 server.cc:633] ------------------------------------ | Model | Version | Status | after allocation : free: 7.47 GB, total: 15.78 GB, used: 8.31 GB ------------------------------------ | fastertransformer | 1 | READY | ------------------------------------I0721 09:01:19.668137 1 metrics.cc:864] Collecting metrics for GPU 0: Tesla V100-SXM2-16GB I0721 09:01:19.668167 1 metrics.cc:864] Collecting metrics for GPU 1: Tesla V100-SXM2-16GB I0721 09:01:19.669954 1 metrics.cc:757] Collecting CPU metrics I0721 09:01:19.670150 1 tritonserver.cc:2264] ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | Option | Value | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | server_id | triton | | server_version | 2.29.0 | | server_extensions | classification sequence model_repository model_repository(unload_dependents) schedule_policy model_configuration system_shared_memory cuda_shared_memory binary_tensor_data statistics trace logging | | model_repository_path[0] | /mnt/triton_repo | | model_control_mode | MODE_NONE | | strict_model_config | 0 | | rate_limit | OFF | | pinned_memory_pool_byte_size | 268435456 | | cuda_memory_pool_byte_size{0} | 67108864 | | cuda_memory_pool_byte_size{1} | 67108864 | | response_cache_byte_size | 0 | | min_supported_compute_capability | 6.0 | | strict_readiness | 1 | | exit_timeout | 30 | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------I0721 09:01:19.672326 1 grpc_server.cc:4819] Started GRPCInferenceService at 0.0.0.0:8001 I0721 09:01:19.672597 1 http_server.cc:3477] Started HTTPService at 0.0.0.0:8000 I0721 09:01:19.714356 1 http_server.cc:184] Started Metrics Service at 0.0.0.0:800206 服务请求 启动 forward 进行验证 # 使用 kubectl 启动port-forward kubectl -n default-group port-forward svc/ft-triton-bloom-1-tritoninferenceserver 8001:8001这里我们使用 Triton Server 提供的 python SDK 所编写的脚本来向 Triton Server 发起请求。脚本中主要完成三件事情 通过 huggingface 中 bloom-7b1 对应的分词器对 query 进行分词和 token 转换通过 triton server SDK 向 triton server 发起请求通过分词器对 output token 进行转换拿到最终的结果 import os, sys #from tkinter import _Padding import numpy as np import json import torch #import tritongrpcclient import argparse import time from transformers import AutoTokenizer import tritonclient.grpc as grpcclient# create tokenizer tokenizer AutoTokenizer.from_pretrained(/mnt/model/bloom-7b1, padding_sideright) tokenizer.pad_token_id tokenizer.eos_token_iddef load_image(img_path: str):Loads an encoded image as an array of bytes.return np.fromfile(img_path, dtypeuint8)def tokeninze(query):# encodeencoded_inputs tokenizer(query, paddingTrue, return_tensorspt)input_token_ids encoded_inputs[input_ids].int()input_lengths encoded_inputs[attention_mask].sum(dim-1, dtypetorch.int32).view(-1, 1)return input_token_ids.numpy().astype(uint32), input_lengths.numpy().astype(uint32)if __name__ __main__:parser argparse.ArgumentParser()parser.add_argument(--model_name,typestr,requiredFalse,defaultfastertransformer,helpModel name)parser.add_argument(--url,typestr,requiredFalse,defaultlocalhost:8001,helpInference server URL. Default is localhost:8001.)parser.add_argument(-v,--verbose,actionstore_true,requiredFalse,defaultFalse,helpEnable verbose output)args parser.parse_args()# 1.创建clienttry:triton_client grpcclient.InferenceServerClient(urlargs.url, verboseargs.verbose)except Exception as e:print(channel creation failed: str(e))sys.exit(1)output_name OUTPUT# 2) 设置inputinputs []## 2.1) input_idsquerydeepspeed isinput_ids, input_lengths tokeninze(query)inputs.append(grpcclient.InferInput(input_ids, input_ids.shape, UINT32))inputs[0].set_data_from_numpy(input_ids)## 2.2) input_lengthinputs.append(grpcclient.InferInput(input_lengths, input_lengths.shape, UINT32))inputs[1].set_data_from_numpy(input_lengths)## 2.3 output lengthoutput_len32output_len_np np.array([[output_len]], dtypenp.uintc)inputs.append(grpcclient.InferInput(request_output_len, output_len_np.shape, UINT32))inputs[2].set_data_from_numpy(output_len_np)# 3) 设置outputoutputs []outputs.append(grpcclient.InferRequestedOutput(output_ids))# 4) 发起请求start_time time.time()results triton_client.infer(model_nameargs.model_name, inputsinputs, outputsoutputs)latency time.time() - start_time# 5) 结果处理转化为numpy 类型计算max转化labeloutput0_data results.as_numpy(output_ids)print(output0_data.shape)result tokenizer.batch_decode(output0_data[0])print(result)发起 client 请求命令如下 $python3 bloom_7b_client.py (1, 1, 36) [deepspeed is the speed of the ship at the time of the collision, and the\ndeepspeed of the other ship is the speed of the other ship at the time]07 总结 本文我们通过 Bloom-7b1 模型展示了如何在云原生 AI 套件中使用 FasterTransformer 对大语言模型进行加速通过与 HuggingFace 的版本对比可以带来 2.5 倍的性能提升。后续我们会逐步推出更多大模型相关的推理加速方案以满足不同的业务需求大家敬请期待。 如果您对 Bloom 模型的微调训练感兴趣您也可以点击阅读原文参与实验场景体验一键训练大模型及部署 GPU 共享推理服务。 另外欢迎加入云原生 AI 套件客户交流钉钉群同我们一起探讨群号33214567。 相关链接 [1] 云原生 AI 套件开发者使用指南 https://help.aliyun.com/zh/ack/cloud-native-ai-suite/getting-started/cloud-native-ai-component-set-user-guide [2] 部署 PyTorch 模型推理服务 https://help.aliyun.com/zh/ack/cloud-native-ai-suite/user-guide/deploy-a-pytorch-model-as-an-inference-service?spma2c4g.11186623.0.0.2267225carYzgA [3] 创建包含 GPU 的 Kubernetes 集群 https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/use-gpu-scheduling-in-ack-clusters#task-1664343 [4] 安装云原生 AI 套件 https://help.aliyun.com/document_detail/212117.htm#task-1917487 [5] 开始使用 OSS https://help.aliyun.com/zh/oss/getting-started/getting-started-with-oss [6] 使用 OSS 静态存储卷 https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/mount-statically-provisioned-oss-volumes 点击此处体验一键训练大模型及部署 GPU 共享推理服务。
http://www.hkea.cn/news/14326727/

相关文章:

  • 郑州网站建设亅汉狮网络青海专业网页设计免费建站
  • 福建网站开发公司电话快速开发平台对比
  • 南通网站定制哪家好wordpress访问有的目录500
  • 深圳有哪些做网站公司好网站建设工作职责
  • 重庆建设网站网站备案本人承诺
  • 网站建设丽水sage wordpress
  • 网站自动提交收录工具类网站开发
  • 汽车制造行业网站模板门户网站自查整改情况报告
  • 川渝建设集团网站app下载官网入口
  • iis7 网站用户权限网站建设科技公司
  • 上海微网站制作建设两学一做网站专题
  • 西安建设科技专修学院网站活动宣传软文
  • 网站查外链产品展示类网站源码
  • 永嘉网站制作系统wordpress评论者名字
  • 提交图片的网站要怎么做内容型网站的运营
  • 有哪些建设网站公司免费精品网站模板
  • 一流小说网站模板企业高端网站
  • 如何计算网站pvsem扫描电子显微镜
  • 展览网站模板大全苏州室内设计学校
  • 中国建站平台seo3的空间构型
  • 重庆网站推广效果中国对外贸易网站
  • 自己做公司网站难吗游戏开发和网站开发哪个好玩
  • 设计网站作品欣赏有那些网站阜宁网站建设找哪家好
  • 网站美工设计收费长春网站建设开发维护
  • 网站营销外包公司哈尔滨做网站建设
  • 晋城做网站的公司云南省网站开发软件
  • 太原做网站推广的公司北京ui设计
  • 企业外贸网站建设方案网页设计网站
  • 五金喷漆东莞网站建设怎样申请注册公司
  • 招聘网站建设维护人员外贸soho