中国搜索网站排名,php网站留言板怎么做,上海工程网站建设,淘宝网网页版卖家登录入口前提条件 确保已经安装了 ExecuTorch。安装教程#xff1a;[ExecuTorch 系列] 1. 从源码构建 ExecuTorch LLM 导出功能需要 pytorch_tokenizers 包。如果遇到 ModuleNotFoundError: No module named pytorch_tokenizers 错误#xff0c;请从 ExecutorTorch 源代码安装…前提条件确保已经安装了 ExecuTorch。安装教程[ExecuTorch 系列] 1. 从源码构建 ExecuTorchLLM 导出功能需要pytorch_tokenizers包。如果遇到ModuleNotFoundError: No module named pytorch_tokenizers错误请从 ExecutorTorch 源代码安装pipinstallpytorch-tokenizers# 从源码安装pipinstall-e./extension/llm/tokenizers/支持的模型列表具体支持的 LLM 模型列表可以从这里找到。Llama 2/3/3.1/3.2Qwen 2.5/3Phi 3.5/4-miniSmolLM2…注如果需要导出不在列表中或其他模型架构如 Gemma、Mistral、BERT、T5、Whisper 等中的模型请参阅 Exporting LLMs with Optimum该页面支持 Hugging Face Hub 中更多种类的模型。export_llmAPIexport_llm是 ExecuTorch 为 LLM 提供的高级导出 API。我们重点介绍使用该 API 导出Llama 3.2 1B。export_llm的参数可以通过CLI args或yaml配置指定Yaml配置字段在 LlmConfig 中定义。调用export_llmpython-mexecutorch.examples.extension.llm.export.export_llm--configpath-to-config-yamlbase.additional-CLI-overrides# 例如python-mextension.llm.export.export_llm--config~/models/Llama/Llama-3.2-1B/config.yaml基础导出要进行 Llama3.2 的基础导出我们首先需要下载检查点文件consolidated.00.pth和参数文件params.json。可以在 Llama 官网 或 Hugging Face 上找到这些。在 Llama 官网 或 Hugging Face 上下载 Llama 系列模型都需要申请而填中国身份申请基本就是被拒绝可以通过下面的方法下载pipinstallmodelscope modelscope download--modelLLM-Research/Llama-3.2-1B然后指定model_class、checkpoint通往检查点文件的路径和params指向参数文件的路径作为参数。此外后续当使用 Runner APIs 运行导出的.pte时Runner 需要知道该模型的bos和eosID才能知道何时终止。这些方法通过.pte中的bos和eos获取方法暴露我们可以通过在metadata参数中指定bos和eosID 来添加。这些 Tokens 的值通常可以在 HuggingFace 上模型的tokenizer_config.json中找到。# path/to/config.yamlbase:model_class:llama3_2checkpoint:path/to/consolidated.00.pthparams:path/to/params.jsonmetadata:{get_bos_id:128000, get_eos_ids:[128009, 128001]}# export_llmpython-m extension.llm.export.export_llm \--config path/to/config.yaml对于支持的其他 LLMscheckpoint 将从 HuggingFace 自动下载参数文件可在executorch/examples/models下各自的目录中找到例如executorch/examples/models/qwen3/config/0_6b_config.json。导出设置ExportConfig 包含导出.pte的设置如max_seq_length提示词最大长度和max_context_length模型内存/缓存的最大长度。添加优化export_llm会在导出前、导出过程中和降低Lowering过程中对模型进行多种优化。量化和向加速器后端委派是主要的优化方式其他所有优化都可以在 ModelConfig 里找到。# path/to/config.yamlbase:model_class:llama3_2checkpoint:path/to/consolidated.00.pthparams:path/to/params.jsonmetadata:{get_bos_id:128000, get_eos_ids:[128009, 128001]}model:use_kv_cache:Trueuse_sdpa_with_kv_cache:True# export_llmpython-m extension.llm.export.export_llm \--config path/to/config.yaml推荐使用use_kv_cache和use_sdpa_with_kv_cache来导出任何 LLM其他选项则在特定情况下有用。例如use_shared_embedding对于具有绑定的输入/输出嵌入层的模型会有帮助前提是你使用 TorchAO 低比特运算进行量化quantization.qmode: torchao:8da(\\d)w或quantization.qmode: torchao:fpa(\d)w详见这里。use_attention_sink当达到最大上下文长度时通过从 KV cache 的开头移除内容来延长生成过程。quantize_kv_cache在 int8 中量化 KV cache。local_global_attention实现了 局部 - 全局注意力机制使特定的注意力层能够使用小得多的局部滑动窗口 KV cache。量化量化选项由 QuantizationConfig 定义。ExecuTorch通过两种方式进行量化TorchAO quantize APIpt2e quantizationTorchAO (XNNPACK)TorchAO 在源码层面进行量化将线性模块替换为量化线性模块。 要在 XNNPACK 后端上进行量化这是应遵循的量化路径。量化模式定义于此处。常见的有8da4wwint8 动态激活 int4 权重量化的缩写。int8int8 仅权重量化。组大小的指定方式如下group_size8、32、64 等。对于 Arm CPU也有用于 int8 动态激活 int[1-8] 权重量化的 低比特内核。请注意不应将其与 XNNPACK 一起使用并且通过实验我们发现对于等效的8da4w其性能有时甚至会更好。使用这些条件时需将qmode指定为以下任一torchao:8da(\d)w int8 动态激活 int[1-8] 权重例如torchao:8da5wtorchao:fpa(\d)w 仅 int[1-8] 权重例如torchao:fps4w要量化 embeddings可以指定embedding_quantize: bitwidth,groupsizebitwidth必须为 2、4 或 8对于低比特内核则使用embedding_quantize: torchao:bitwidth,groupsizebitwidth可以是 1 到 8。# path/to/config.yamlbase:model_class:llama3_2checkpoint:path/to/consolidated.00.pthparams:path/to/params.jsonmetadata:{get_bos_id:128000, get_eos_ids:[128009, 128001]}model:use_kv_cache:Trueuse_sdpa_with_kv_cache:Truequantization:embedding_quantize:4,32qmode:8da4w# export_llmpython-m extension.llm.export.export_llm \--config path/to/config.yamlpt2e (QNN, CoreML, and Vulkan)pt2e 在导出后图层面进行量化交换节点并注入量化/解量化节点。对于非 CPU 后端QNN、CoreML、Vulkan进行量化这就是应遵循的量化路径。关于 pt2e 的内容请见此处以及 ExecuTorch 如何使用 pt2e 请见此处。后端支持后端选项由 BackendConfig 定义。每个后端都有自己的后端配置选项。这里有一个将 LLM 降为 XNNPACK 以实现 CPU 加速的示例# path/to/config.yamlbase:model_class:llama3_2checkpoint:path/to/consolidated.00.pthparams:path/to/params.jsonmetadata:{get_bos_id:128000, get_eos_ids:[128009, 128001]}model:use_kv_cache:Trueuse_sdpa_withp_kv_cache:Truequantization:embedding_quantize:4,32qmode:8da4wbackend:xnnpack:enabled:Trueextended_ops:True# Expand the selection of ops delegated to XNNPACK.性能分析和调试要查看哪些操作被委派到后端哪些没有请指定verbose: True# path/to/config.yaml...debug:verbose:True...在日志中会有一个表格包含图中的所有运算操作以及哪些被委派了哪些没有被委派。例如更具体的信息参见 此处。参考文档PyTorch - Exporting LLMs