VSCode部署含PyTorch的Azure Functions应用失败求助
问题概述
通过VSCode部署包含PyTorch的Azure Functions应用时失败,本地测试正常,但云端pip安装依赖阶段报错。
部署错误日志
3:51:18 PM CartProvider: Running pip install...
3:51:25 PM CartProvider: Done in 7 sec(s).
3:51:25 PM CartProvider: [18:51:18+0000] Collecting azure-functions
3:51:25 PM CartProvider: [18:51:18+0000] Downloading azure_functions-1.18.0-py3-none-any.whl (173 kB)
3:51:25 PM CartProvider: [18:51:19+0000] Collecting torch
3:51:25 PM CartProvider: [18:51:19+0000] Downloading torch-2.2.1-cp310-cp310-manylinux1_x86_64.whl (755.5 MB)
3:51:25 PM CartProvider: "2024-03-04 18:51:25"|ERROR|[18:51:18+0000] Collecting azure-functions
3:51:25 PM CartProvider: [18:51:18+0000] Downloading azure_functions-1.18.0-py3-none-any.whl (173 kB)
3:51:25 PM CartProvider: [18:51:19+0000] Collecting torch
3:51:25 PM CartProvider: [18:51:19+0000] Downloading torch-2.2.1-cp310-cp310-manylinux1_x86_64.whl (755.5 MB) | Exit code: 137 | Please review your requirements.txt | More information: https://aka.ms/troubleshoot-python
3:51:27 PM CartProvider: /opt/Kudu/Scripts/starter.sh oryx build /tmp/zipdeploy/extracted -o /home/site/wwwroot --platform python --platform-version 3.10.4 -p packagedir=.python_packages/lib/site-packages
3:51:31 PM CartProvider: Deployment failed.
当前requirements.txt内容
azure-functions torch sentence-transformers pandas
应用说明
代码为带输入绑定的HTTP触发器,功能是接收产品名称列表,返回数据库中语义最相似的产品,本地测试完全正常。
解决步骤
1. 修复requirements.txt格式
将每个依赖单独占一行,避免解析异常:
azure-functions torch sentence-transformers pandas
2. 解决Exit Code 137(内存不足)问题
Exit Code 137是由于部署环境内存配额不足,PyTorch安装包体积过大(755MB)导致安装时内存溢出,可通过以下方式解决:
- 升级函数计划:将消耗计划升级为高级计划或专用计划,这类计划提供更大的内存资源。
- 指定CPU版本PyTorch:在requirements.txt中明确安装仅CPU版本的PyTorch,大幅减小包体积:
azure-functions torch==2.2.1+cpu --index-url https://download.pytorch.org/whl/cpu sentence-transformers pandas - 启用远程构建:在VSCode的Azure Functions扩展中开启远程构建,让Azure使用充足资源完成依赖安装。
- 预编译依赖后部署:本地完成依赖安装后,将
.python_packages目录一同打包部署,跳过云端pip安装步骤。
3. 验证版本一致性
确认Azure Functions的Python运行时版本与本地一致(当前为3.10.4),避免版本兼容问题。
内容的提问来源于stack exchange,提问作者Tomas Hirschberg

