diff --git a/tutorials/source_zh_cn/model_infer/ms_infer/ms_infer_model_infer.rst b/tutorials/source_zh_cn/model_infer/ms_infer/ms_infer_model_infer.rst index 802b1b8e0bfefb6ceaabf74123a3509b3a134084..ef1d60c4989a5c662ff0087f5884b4ff0f71396f 100644 --- a/tutorials/source_zh_cn/model_infer/ms_infer/ms_infer_model_infer.rst +++ b/tutorials/source_zh_cn/model_infer/ms_infer/ms_infer_model_infer.rst @@ -107,7 +107,7 @@ MindSpore大语言模型为了能够实现最优的性价比,针对大语言 .. note:: - 由于Qwen2模型也有多个版本和配置,本文主要基于Qwen2-7B-Instrcut模型进行说明。 + 由于Qwen2模型也有多个版本和配置,本文主要基于Qwen2-7B-Instruct模型进行说明。 环境准备 ~~~~~~~~ diff --git a/tutorials/source_zh_cn/model_infer/ms_infer/ms_infer_model_serving_infer.md b/tutorials/source_zh_cn/model_infer/ms_infer/ms_infer_model_serving_infer.md index 0e2545f5538f18c1447c5db0cbeb1432b5bed41b..abc23464007f39c9a032f10fc9e71e0461aaf917 100644 --- a/tutorials/source_zh_cn/model_infer/ms_infer/ms_infer_model_serving_infer.md +++ b/tutorials/source_zh_cn/model_infer/ms_infer/ms_infer_model_serving_infer.md @@ -20,7 +20,7 @@ logits = model(input_ids) next_token = ops.argmax(logits) -generate_text = tokenizer.decode(next_token)) +generate_text = tokenizer.decode(next_token) print(generate_text) ``` @@ -85,7 +85,7 @@ vllm-mindspore的运行环境创建后,还需要安装以下依赖包: ### 模型准备 -vllm-mindspore服务化支持原生Hugging Face的模型直接运行,因此直接从Hugging Face官网下载模型即可,此处我们仍然以Qwen2-7B-Insstrcut模型为例。 +vllm-mindspore服务化支持原生Hugging Face的模型直接运行,因此直接从Hugging Face官网下载模型即可,此处我们仍然以Qwen2-7B-Instruct模型为例。 ```shell git lfs install @@ -100,7 +100,7 @@ git clone https://huggingface.co/Qwen/Qwen2-7B-Instruct # set Ascend CANN tools envs /usr/local/Ascend/ascend-toolkit/set_env.sh export ASCEND_CUSTOM_PATH=${ASCEND_HOME_PATH}/../ -export ASCEND_RT_VISIABLE_DEVICES=3 +export ASCEND_RT_VISIBLE_DEVICES=3 export ASCEND_TOTAL_MEMORY_GB=32 # mindspore envs diff --git a/tutorials/source_zh_cn/model_infer/ms_infer/ms_infer_network_develop.md b/tutorials/source_zh_cn/model_infer/ms_infer/ms_infer_network_develop.md index 4c9197ba886aefb73cd3b013de3e43fcbe531179..a6803e42f493b9d529b064888336e76dc57842ee 100644 --- a/tutorials/source_zh_cn/model_infer/ms_infer/ms_infer_network_develop.md +++ b/tutorials/source_zh_cn/model_infer/ms_infer/ms_infer_network_develop.md @@ -24,7 +24,7 @@ MindSpore推荐用户先用动态图模式进行模型开发,然后根据需 - **DecodeLayer**:即Transformer结构,是大语言模型关键计算模块,通常根据配置不同,会重复多层计算,每一层实际就是一个Transformer结构。 -- **RmsNorm&Linear**:输出线性归一层,在Transformer结构计算完后,将结果归一成和模型词表一样的维度,最终输出成每个token的概率分布返回。 +- **RmsNorm & Linear**:输出线性归一层,在Transformer结构计算完后,将结果归一成和模型词表一样的维度,最终输出成每个token的概率分布返回。 使用MindSpore大语言模型推理构建网络,可以根据MindSpore提供的算子自己拼装。下面以Qwen2模型为例,简单描述构建模型的过程,完整端到端样例可以参考[qwen2.py](https://gitee.com/mindspore/docs/blob/master/docs/sample_code/infer_code/qwen2/qwen2.py)。 @@ -32,7 +32,7 @@ MindSpore推荐用户先用动态图模式进行模型开发,然后根据需 由于Qwen2大语言模型的配置和参数都比较多,为了能够更方便地管理这些参数,需要先定义模型使用的Config和Input类。同时,注意到Linear和RmsNorm算子在网络中的各个功能层中会频繁出现,可以预先将这些公共层构建好。 -#### Config&Input +#### Config & Input ```python import json @@ -608,9 +608,9 @@ class Qwen2Model(nn.Cell): 由于大语言模型通常会使用KVCache优化,MindSpore提供的FlashAttention和lashPagedAttention需要和KVCache配合使用,需要额外传入一些参数,其中主要包括: -- **k_cache&v_cache**:kv_cache对象可以理解为是一个缓存表,用于保存上一次迭代中的key和value值。在下一次迭代时,可以直接读取这些值,从而避免重复计算前n个词的key和value,以提升性能。 +- **k_cache & v_cache**:kv_cache对象可以理解为是一个缓存表,用于保存上一次迭代中的key和value值。在下一次迭代时,可以直接读取这些值,从而避免重复计算前n个词的key和value,以提升性能。 -- **block_tables&slot_mapping**:PagedAttention通过类似分页的机制,将KVCache按block储存,以便相同词能够集中在同一块block,从而提升显存利用率。 +- **block_tables & slot_mapping**:PagedAttention通过类似分页的机制,将KVCache按block储存,以便相同词能够集中在同一块block,从而提升显存利用率。 根据上面描述,这些参数可以用一个管理类进行封装,代码可以参考: diff --git a/tutorials/source_zh_cn/model_infer/ms_infer/ms_infer_parallel_infer.md b/tutorials/source_zh_cn/model_infer/ms_infer/ms_infer_parallel_infer.md index 89492e3d3441b2d5920cebd9f2fc7a2fe4bd9938..15a84a14216cb1ee28be7718b05250b611f7ce0d 100644 --- a/tutorials/source_zh_cn/model_infer/ms_infer/ms_infer_parallel_infer.md +++ b/tutorials/source_zh_cn/model_infer/ms_infer/ms_infer_parallel_infer.md @@ -4,7 +4,7 @@ 随着模型规模的不断扩展,大语言模型所需的计算资源,特别是显存需求,呈指数级增长。以Qwen2-72B为例,在半精度(FP16)下,这些参数本身就需要约144GB的显存。 -同时大模型日益膨胀的序列长度也给显存带了极大的压力。显存不仅影响了模型的加载,还限制了批处理(batch size)大小。较小的批处理可能会降低推理效率,进而影响整个系统的吞吐量。 +同时大模型日益膨胀的序列长度也给显存带来极大的压力。显存不仅影响了模型的加载,还限制了批处理(batch size)大小。较小的批处理可能会降低推理效率,进而影响整个系统的吞吐量。 显存的压力使得单一设备很难在合理时间内完成推理任务,并行计算成为应对这一挑战的关键。本章将以常见大语言模型网络结构为例,分析模型并行的方案。 @@ -739,7 +739,7 @@ class Qwen2MLP(nn.Cell): self.gate_proj = Qwen2ColParallelLinear( input_size=config.hidden_size, output_size=config.intermediate_size, - param_dypte=config.param_dtype, + param_dtype=config.param_dtype, bias=False ) self.down_proj = Qwen2RowParallelLinear(