我正在尝试从 Windows 上的 MLFlow 托管模型构建容器。根据 mlflow 指令,该命令如下所示:
f"mlflow models build-docker --model-uri {logged_model} --name {container_name}"
这似乎成功安装了依赖项,但最终失败,gcc 命令失败 - sudo apt-get install gcc。我如何将修复集成到该管道中? docker 在 Windows 上构建时是否期望运行 Linux 命令(它在虚拟机中运行吗?),或者是否有我需要更改的设置?
Downloading artifacts: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1001.27it/s]
2024/04/18 11:08:54 INFO mlflow.models.flavor_backend_registry: Selected backend for flavor 'python_function'
Downloading artifacts: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 9/9 [00:00<00:00, 69.77it/s]
2024/04/18 11:08:55 INFO mlflow.pyfunc.backend: Building docker image with name power_consumption_v1
D:\Programs\anaconda3\Lib\site-packages\paramiko\transport.py:219: CryptographyDeprecationWarning: Blowfish has been deprecated and will be removed in a future release
"class": algorithms.Blowfish,
#0 building with "default" instance using docker driver
#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 1.10kB done
#1 DONE 0.1s
#2 [internal] load metadata for docker.io/library/python:3.11.7-slim
#2 DONE 1.2s
#3 [internal] load .dockerignore
#3 transferring context: 2B done
#3 DONE 0.1s
#4 [1/8] FROM docker.io/library/python:3.11.7-slim@sha256:53d6284a40eae6b625f22870f5faba6c54f2a28db9027408f4dee111f1e885a2
#4 DONE 0.0s
#5 [internal] load build context
#5 transferring context: 124.36MB 5.0s
#5 transferring context: 136.66MB 6.2s done
#5 DONE 6.3s
#6 [2/8] RUN apt-get -y update && apt-get install -y --no-install-recommends nginx
#6 CACHED
#7 [3/8] WORKDIR /opt/mlflow
#7 CACHED
#8 [4/8] RUN pip install mlflow==2.11.3
#8 CACHED
#9 [5/8] COPY model_dir/best_estimator /opt/ml/model
#9 CACHED
#10 [6/8] RUN python -c "from mlflow.models import container as C; C._install_pyfunc_deps('/opt/ml/model', install_mlflow=False, enable_mlserver=False, env_manager='local');"
#10 2.315 Collecting pip==23.3.1
#10 2.315 Obtaining dependency information for pip==23.3.1 from https://files.pythonhosted.org/packages/47/6a/453160888fab7c6a432a6e25f8afe6256d0d9f2cbd25971021da6491d899/pip-23.3.1-py3-none-any.whl.metadata
#10 2.489 Downloading pip-23.3.1-py3-none-any.whl.metadata (3.5 kB)
#10 2.847 Collecting setuptools==68.2.2
#10 2.847 Obtaining dependency information for setuptools==68.2.2 from https://files.pythonhosted.org/packages/bb/26/7945080113158354380a12ce26873dd6c1ebd88d47f5bc24e2c5bb38c16a/setuptools-68.2.2-py3-none-any.whl.metadata
#10 2.874 Downloading setuptools-68.2.2-py3-none-any.whl.metadata (6.3 kB)
#10 2.955 Collecting wheel==0.41.2
#10 2.955 Obtaining dependency information for wheel==0.41.2 from https://files.pythonhosted.org/packages/b8/8b/31273bf66016be6ad22bb7345c37ff350276cfd46e389a0c2ac5da9d9073/wheel-0.41.2-py3-none-any.whl.metadata
#10 2.983 Downloading wheel-0.41.2-py3-none-any.whl.metadata (2.2 kB)
#10 2.995 Requirement already satisfied: mlflow==2.11.3 in /usr/local/lib/python3.11/site-packages (from -r /opt/ml/model/requirements.txt (line 1)) (2.11.3)
#10 3.036 Collecting argparse==1.4.0 (from -r /opt/ml/model/requirements.txt (line 2))
#10 3.037 Obtaining dependency information for argparse==1.4.0 from https://files.pythonhosted.org/packages/f2/94/3af39d34be01a24a6e65433d19e107099374224905f1e0cc6bbe1fd22a2f/argparse-1.4.0-py2.py3-none-any.whl.metadata
#10 3.063 Downloading argparse-1.4.0-py2.py3-none-any.whl.metadata (2.8 kB)
#10 3.128 Collecting cloudpickle==2.2.1 (from -r /opt/ml/model/requirements.txt (line 3))
#10 3.129 Obtaining dependency information for cloudpickle==2.2.1 from https://files.pythonhosted.org/packages/15/80/44286939ca215e88fa827b2aeb6fa3fd2b4a7af322485c7170d6f9fd96e0/cloudpickle-2.2.1-py3-none-any.whl.metadata
#10 3.155 Downloading cloudpickle-2.2.1-py3-none-any.whl.metadata (6.9 kB)
#10 3.359 Collecting lz4==4.3.2 (from -r /opt/ml/model/requirements.txt (line 4))
#10 3.359 Obtaining dependency information for lz4==4.3.2 from https://files.pythonhosted.org/packages/77/8f/955d5447392f3ada5274cfe3e3d7058e1c1230711ebdf45b285783bbdfed/lz4-4.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata
#10 3.387 Downloading lz4-4.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.7 kB)
#10 3.407 Requirement already satisfied: numpy==1.26.4 in /usr/local/lib/python3.11/site-packages (from -r /opt/ml/model/requirements.txt (line 5)) (1.26.4)
#10 3.468 Collecting packaging==23.1 (from -r /opt/ml/model/requirements.txt (line 6))
#10 3.468 Obtaining dependency information for packaging==23.1 from https://files.pythonhosted.org/packages/ab/c3/57f0601a2d4fe15de7a553c00adbc901425661bf048f2a22dfc500caf121/packaging-23.1-py3-none-any.whl.metadata
#10 3.496 Downloading packaging-23.1-py3-none-any.whl.metadata (3.1 kB)
#10 3.818 Collecting pandas==2.1.4 (from -r /opt/ml/model/requirements.txt (line 7))
#10 3.818 Obtaining dependency information for pandas==2.1.4 from https://files.pythonhosted.org/packages/f8/8c/9ad173c5cd2c7178c84075c02ec37b5d1d53fb1d015f51ea3e623ea9c31c/pandas-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata
#10 3.845 Downloading pandas-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (18 kB)
#10 3.948 Collecting pathlib==1.0.1 (from -r /opt/ml/model/requirements.txt (line 8))
#10 3.949 Obtaining dependency information for pathlib==1.0.1 from https://files.pythonhosted.org/packages/78/f9/690a8600b93c332de3ab4a344a4ac34f00c8f104917061f779db6a918ed6/pathlib-1.0.1-py3-none-any.whl.metadata
#10 3.979 Downloading pathlib-1.0.1-py3-none-any.whl.metadata (5.1 kB)
#10 4.198 Collecting psutil==5.9.0 (from -r /opt/ml/model/requirements.txt (line 9))
#10 4.234 Downloading psutil-5.9.0.tar.gz (478 kB)
#10 4.320 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 478.3/478.3 kB 5.8 MB/s eta 0:00:00
#10 4.381 Preparing metadata (setup.py): started
#10 4.920 Preparing metadata (setup.py): finished with status 'done'
#10 4.926 Requirement already satisfied: pyyaml==6.0.1 in /usr/local/lib/python3.11/site-packages (from -r /opt/ml/model/requirements.txt (line 10)) (6.0.1)
#10 5.179 Collecting scikit-learn==1.2.2 (from -r /opt/ml/model/requirements.txt (line 11))
#10 5.180 Obtaining dependency information for scikit-learn==1.2.2 from https://files.pythonhosted.org/packages/4c/64/a1e6e92b850b39200c82e3bc54d556b2c634b3904c39ac5cdb10b1c5765f/scikit_learn-1.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata
#10 5.210 Downloading scikit_learn-1.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)
#10 5.494 Collecting scipy==1.11.4 (from -r /opt/ml/model/requirements.txt (line 12))
#10 5.495 Obtaining dependency information for scipy==1.11.4 from https://files.pythonhosted.org/packages/6b/d4/d62ce38ba00dc67d7ec4ec5cc19d36958d8ed70e63778715ad626bcbc796/scipy-1.11.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata
#10 5.520 Downloading scipy-1.11.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (60 kB)
#10 5.537 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 60.4/60.4 kB 4.5 MB/s eta 0:00:00
#10 5.634 Collecting xgboost==2.0.3 (from -r /opt/ml/model/requirements.txt (line 13))
#10 5.634 Obtaining dependency information for xgboost==2.0.3 from https://files.pythonhosted.org/packages/c3/eb/496aa2f5d356af4185f770bc76055307f8d1870e11016b10fd779b21769c/xgboost-2.0.3-py3-none-manylinux2014_x86_64.whl.metadata
#10 5.669 Downloading xgboost-2.0.3-py3-none-manylinux2014_x86_64.whl.metadata (2.0 kB)
#10 5.768 Requirement already satisfied: click<9,>=7.0 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (8.1.7)
#10 5.778 Requirement already satisfied: entrypoints<1 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (0.4)
#10 5.780 Requirement already satisfied: gitpython<4,>=3.1.9 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (3.1.43)
#10 5.782 Requirement already satisfied: protobuf<5,>=3.12.0 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (4.25.3)
#10 5.784 Requirement already satisfied: pytz<2025 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (2024.1)
#10 5.786 Requirement already satisfied: requests<3,>=2.17.3 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (2.31.0)
#10 5.793 Requirement already satisfied: importlib-metadata!=4.7.0,<8,>=3.7.0 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (7.1.0)
#10 5.796 Requirement already satisfied: sqlparse<1,>=0.4.0 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (0.5.0)
#10 5.798 Requirement already satisfied: alembic!=1.10.0,<2 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (1.13.1)
#10 5.800 Requirement already satisfied: docker<8,>=4.0.0 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (7.0.0)
#10 5.801 Requirement already satisfied: Flask<4 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (3.0.3)
#10 5.822 Requirement already satisfied: querystring-parser<2 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (1.2.4)
#10 5.824 Requirement already satisfied: sqlalchemy<3,>=1.4.0 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (2.0.29)
#10 5.833 Requirement already satisfied: pyarrow<16,>=4.0.0 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (15.0.2)
#10 5.836 Requirement already satisfied: markdown<4,>=3.3 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (3.6)
#10 5.837 Requirement already satisfied: matplotlib<4 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (3.8.4)
#10 5.839 Requirement already satisfied: graphene<4 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (3.3)
#10 5.842 Requirement already satisfied: gunicorn<22 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (21.2.0)
#10 5.844 Requirement already satisfied: Jinja2<4,>=2.11 in /usr/local/lib/python3.11/site-packages (from mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (3.1.3)
#10 5.930 Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/site-packages (from pandas==2.1.4->-r /opt/ml/model/requirements.txt (line 7)) (2.9.0.post0)
#10 5.932 Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.11/site-packages (from pandas==2.1.4->-r /opt/ml/model/requirements.txt (line 7)) (2024.1)
#10 5.999 Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.11/site-packages (from scikit-learn==1.2.2->-r /opt/ml/model/requirements.txt (line 11)) (1.4.0)
#10 6.002 Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.11/site-packages (from scikit-learn==1.2.2->-r /opt/ml/model/requirements.txt (line 11)) (3.4.0)
#10 6.062 Requirement already satisfied: Mako in /usr/local/lib/python3.11/site-packages (from alembic!=1.10.0,<2->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (1.3.3)
#10 6.066 Requirement already satisfied: typing-extensions>=4 in /usr/local/lib/python3.11/site-packages (from alembic!=1.10.0,<2->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (4.11.0)
#10 6.089 Requirement already satisfied: urllib3>=1.26.0 in /usr/local/lib/python3.11/site-packages (from docker<8,>=4.0.0->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (2.2.1)
#10 6.105 Requirement already satisfied: Werkzeug>=3.0.0 in /usr/local/lib/python3.11/site-packages (from Flask<4->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (3.0.2)
#10 6.107 Requirement already satisfied: itsdangerous>=2.1.2 in /usr/local/lib/python3.11/site-packages (from Flask<4->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (2.2.0)
#10 6.110 Requirement already satisfied: blinker>=1.6.2 in /usr/local/lib/python3.11/site-packages (from Flask<4->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (1.7.0)
#10 6.133 Requirement already satisfied: gitdb<5,>=4.0.1 in /usr/local/lib/python3.11/site-packages (from gitpython<4,>=3.1.9->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (4.0.11)
#10 6.162 Requirement already satisfied: graphql-core<3.3,>=3.1 in /usr/local/lib/python3.11/site-packages (from graphene<4->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (3.2.3)
#10 6.164 Requirement already satisfied: graphql-relay<3.3,>=3.1 in /usr/local/lib/python3.11/site-packages (from graphene<4->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (3.2.0)
#10 6.167 Requirement already satisfied: aniso8601<10,>=8 in /usr/local/lib/python3.11/site-packages (from graphene<4->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (9.0.1)
#10 6.199 Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.11/site-packages (from importlib-metadata!=4.7.0,<8,>=3.7.0->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (3.18.1)
#10 6.209 Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.11/site-packages (from Jinja2<4,>=2.11->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (2.1.5)
#10 6.238 Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.11/site-packages (from matplotlib<4->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (1.2.1)
#10 6.241 Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.11/site-packages (from matplotlib<4->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (0.12.1)
#10 6.248 Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.11/site-packages (from matplotlib<4->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (4.51.0)
#10 6.250 Requirement already satisfied: kiwisolver>=1.3.1 in /usr/local/lib/python3.11/site-packages (from matplotlib<4->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (1.4.5)
#10 6.263 Requirement already satisfied: pillow>=8 in /usr/local/lib/python3.11/site-packages (from matplotlib<4->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (10.3.0)
#10 6.265 Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.11/site-packages (from matplotlib<4->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (3.1.2)
#10 6.289 Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/site-packages (from python-dateutil>=2.8.2->pandas==2.1.4->-r /opt/ml/model/requirements.txt (line 7)) (1.16.0)
#10 6.315 Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/site-packages (from requests<3,>=2.17.3->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (3.3.2)
#10 6.317 Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/site-packages (from requests<3,>=2.17.3->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (3.7)
#10 6.321 Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/site-packages (from requests<3,>=2.17.3->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (2024.2.2)
#10 6.362 Requirement already satisfied: greenlet!=0.4.17 in /usr/local/lib/python3.11/site-packages (from sqlalchemy<3,>=1.4.0->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (3.0.3)
#10 6.487 Requirement already satisfied: smmap<6,>=3.0.1 in /usr/local/lib/python3.11/site-packages (from gitdb<5,>=4.0.1->gitpython<4,>=3.1.9->mlflow==2.11.3->-r /opt/ml/model/requirements.txt (line 1)) (5.0.1)
#10 6.674 Downloading pip-23.3.1-py3-none-any.whl (2.1 MB)
#10 6.799 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 17.3 MB/s eta 0:00:00
#10 6.826 Downloading setuptools-68.2.2-py3-none-any.whl (807 kB)
#10 6.873 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 807.9/807.9 kB 18.9 MB/s eta 0:00:00
#10 6.901 Downloading wheel-0.41.2-py3-none-any.whl (64 kB)
#10 6.918 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 64.8/64.8 kB 4.0 MB/s eta 0:00:00
#10 6.943 Downloading argparse-1.4.0-py2.py3-none-any.whl (23 kB)
#10 6.976 Downloading cloudpickle-2.2.1-py3-none-any.whl (25 kB)
#10 7.010 Downloading lz4-4.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)
#10 7.103 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 14.0 MB/s eta 0:00:00
#10 7.128 Downloading packaging-23.1-py3-none-any.whl (48 kB)
#10 7.145 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 48.9/48.9 kB 3.4 MB/s eta 0:00:00
#10 7.173 Downloading pandas-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.2 MB)
#10 7.718 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12.2/12.2 MB 24.0 MB/s eta 0:00:00
#10 7.743 Downloading pathlib-1.0.1-py3-none-any.whl (14 kB)
#10 7.776 Downloading scikit_learn-1.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.6 MB)
#10 8.197 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.6/9.6 MB 22.8 MB/s eta 0:00:00
#10 8.222 Downloading scipy-1.11.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.4 MB)
#10 9.866 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 36.4/36.4 MB 20.7 MB/s eta 0:00:00
#10 9.898 Downloading xgboost-2.0.3-py3-none-manylinux2014_x86_64.whl (297.1 MB)
#10 25.61 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 297.1/297.1 MB 2.7 MB/s eta 0:00:00
#10 26.62 Building wheels for collected packages: psutil
#10 26.63 Building wheel for psutil (setup.py): started
#10 27.03 Building wheel for psutil (setup.py): finished with status 'error'
#10 27.08 error: subprocess-exited-with-error
#10 27.08
#10 27.08 × python setup.py bdist_wheel did not run successfully.
#10 27.08 │ exit code: 1
#10 27.08 ╰─> [43 lines of output]
#10 27.08 running bdist_wheel
#10 27.08 running build
#10 27.08 running build_py
#10 27.08 creating build
#10 27.08 creating build/lib.linux-x86_64-cpython-311
#10 27.08 creating build/lib.linux-x86_64-cpython-311/psutil
#10 27.08 copying psutil/_common.py -> build/lib.linux-x86_64-cpython-311/psutil
#10 27.08 copying psutil/_psposix.py -> build/lib.linux-x86_64-cpython-311/psutil
#10 27.08 copying psutil/__init__.py -> build/lib.linux-x86_64-cpython-311/psutil
#10 27.08 copying psutil/_pslinux.py -> build/lib.linux-x86_64-cpython-311/psutil
#10 27.08 copying psutil/_psaix.py -> build/lib.linux-x86_64-cpython-311/psutil
#10 27.08 copying psutil/_compat.py -> build/lib.linux-x86_64-cpython-311/psutil
#10 27.08 copying psutil/_pssunos.py -> build/lib.linux-x86_64-cpython-311/psutil
#10 27.08 copying psutil/_pswindows.py -> build/lib.linux-x86_64-cpython-311/psutil
#10 27.08 copying psutil/_psosx.py -> build/lib.linux-x86_64-cpython-311/psutil
#10 27.08 copying psutil/_psbsd.py -> build/lib.linux-x86_64-cpython-311/psutil
#10 27.08 creating build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 copying psutil/tests/test_misc.py -> build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 copying psutil/tests/runner.py -> build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 copying psutil/tests/test_sunos.py -> build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 copying psutil/tests/test_aix.py -> build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 copying psutil/tests/test_osx.py -> build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 copying psutil/tests/test_memleaks.py -> build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 copying psutil/tests/test_process.py -> build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 copying psutil/tests/__init__.py -> build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 copying psutil/tests/test_windows.py -> build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 copying psutil/tests/test_bsd.py -> build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 copying psutil/tests/test_connections.py -> build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 copying psutil/tests/test_system.py -> build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 copying psutil/tests/__main__.py -> build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 copying psutil/tests/test_testutils.py -> build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 copying psutil/tests/test_unicode.py -> build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 copying psutil/tests/test_contracts.py -> build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 copying psutil/tests/test_posix.py -> build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 copying psutil/tests/test_linux.py -> build/lib.linux-x86_64-cpython-311/psutil/tests
#10 27.08 running build_ext
#10 27.08 building 'psutil._psutil_linux' extension
#10 27.08 creating build/temp.linux-x86_64-cpython-311
#10 27.08 creating build/temp.linux-x86_64-cpython-311/psutil
#10 27.08 gcc -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_SIZEOF_PID_T=4 -DPSUTIL_VERSION=590 -DPSUTIL_LINUX=1 -DPSUTIL_ETHTOOL_MISSING_TYPES=1 -I/usr/local/include/python3.11 -c psutil/_psutil_common.c -o build/temp.linux-x86_64-cpython-311/psutil/_psutil_common.o
#10 27.08 C compiler or Python headers are not installed on this system. Try to run:
#10 27.08 sudo apt-get install gcc python3-dev
#10 27.08 error: command 'gcc' failed: No such file or directory
#10 27.08 [end of output]
#10 27.08
#10 27.08 note: This error originates from a subprocess, and is likely not a problem with pip.
#10 27.08 ERROR: Failed building wheel for psutil
#10 27.08 Running setup.py clean for psutil
#10 27.41 Failed to build psutil
#10 27.41 ERROR: Could not build wheels for psutil, which is required to install pyproject.toml-based projects
#10 27.51
#10 27.51 [notice] A new release of pip is available: 23.2.1 -> 24.0
#10 27.51 [notice] To update, run: pip install --upgrade pip
#10 27.78 Traceback (most recent call last):
#10 27.78 File "<string>", line 1, in <module>
#10 27.78 File "/usr/local/lib/python3.11/site-packages/mlflow/models/container/__init__.py", line 92, in _install_pyfunc_deps
#10 27.78 activate_cmd = _install_model_dependencies_to_env(model_path, env_manager) if model_path else []
#10 27.78 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#10 27.78 File "/usr/local/lib/python3.11/site-packages/mlflow/models/container/__init__.py", line 144, in _install_model_dependencies_to_env
#10 27.78 raise Exception("Failed to install model dependencies.")
#10 27.78 Exception: Failed to install model dependencies.
#10 ERROR: process "/bin/sh -c python -c \"from mlflow.models import container as C; C._install_pyfunc_deps('/opt/ml/model', install_mlflow=False, enable_mlserver=False, env_manager='local');\"" did not complete successfully: exit code: 1
------
> [6/8] RUN python -c "from mlflow.models import container as C; C._install_pyfunc_deps('/opt/ml/model', install_mlflow=False, enable_mlserver=False, env_manager='local');":
27.51 [notice] A new release of pip is available: 23.2.1 -> 24.0
27.51 [notice] To update, run: pip install --upgrade pip
27.78 Traceback (most recent call last):
27.78 File "<string>", line 1, in <module>
27.78 File "/usr/local/lib/python3.11/site-packages/mlflow/models/container/__init__.py", line 92, in _install_pyfunc_deps
27.78 activate_cmd = _install_model_dependencies_to_env(model_path, env_manager) if model_path else []
27.78 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
27.78 File "/usr/local/lib/python3.11/site-packages/mlflow/models/container/__init__.py", line 144, in _install_model_dependencies_to_env
27.78 raise Exception("Failed to install model dependencies.")
27.78 Exception: Failed to install model dependencies.
------
Dockerfile:15
--------------------
13 | # Copy model to image and install dependencies
14 | COPY model_dir/best_estimator /opt/ml/model
15 | >>> RUN python -c "from mlflow.models import container as C; C._install_pyfunc_deps('/opt/ml/model', install_mlflow=False, enable_mlserver=False, env_manager='local');"
16 |
17 | ENV MLFLOW_DISABLE_ENV_CREATION=True
--------------------
ERROR: failed to solve: process "/bin/sh -c python -c \"from mlflow.models import container as C; C._install_pyfunc_deps('/opt/ml/model', install_mlflow=False, enable_mlserver=False, env_manager='local');\"" did not complete successfully: exit code: 1
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "D:\Programs\anaconda3\Scripts\mlflow.exe\__main__.py", line 7, in <module>
File "D:\Programs\anaconda3\Lib\site-packages\click\core.py", line 1157, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Programs\anaconda3\Lib\site-packages\click\core.py", line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "D:\Programs\anaconda3\Lib\site-packages\click\core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Programs\anaconda3\Lib\site-packages\click\core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Programs\anaconda3\Lib\site-packages\click\core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Programs\anaconda3\Lib\site-packages\click\core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Programs\anaconda3\Lib\site-packages\mlflow\models\cli.py", line 274, in build_docker
python_api.build_docker(**kwargs)
File "D:\Programs\anaconda3\Lib\site-packages\mlflow\models\python_api.py", line 79, in build_docker
get_flavor_backend(model_uri, docker_build=True, env_manager=env_manager).build_image(
File "D:\Programs\anaconda3\Lib\site-packages\mlflow\pyfunc\backend.py", line 359, in build_image
docker_utils.build_image_from_context(context_dir=cwd, image_name=image_name)
File "D:\Programs\anaconda3\Lib\site-packages\mlflow\models\docker_utils.py", line 235, in build_image_from_context
raise RuntimeError("Docker build failed.")
RuntimeError: Docker build failed.
虽然社区对在没有评论的情况下否决该问题非常无助,但我已经得出了以下解决方案,该解决方案似乎是 MLflow 的任何实际构建所必需的,但在其论坛或任何其他论坛上没有记录我见过。希望这对其他人有帮助。建议的构建命令在构建过程中无法安装 gcc,并且无法为 psutils 构建 pip 轮:
mlflow models build-docker --model-uri "runs:/some-run-uuid/my-model" --name "my-image-name"
相反,最好让 mlflow 生成一个 dockerfile,编辑它,然后单独构建:
run_command(f"mlflow models generate-dockerfile --model-uri {logged_model} --output-directory {model_dir}")
with open(model_dir / 'Dockerfile', 'r') as f:
lines = f.readlines()
for ind, line in enumerate(lines):
if line.startswith('RUN apt-get -y update && apt-get install -y --no-install-recommends '):
lines[ind] = line.split('\n')[0] + ' -y gcc g++\n'
with open(model_dir / 'Dockerfile', 'w') as f:
f.writelines(lines)
run_command(f"docker build -t {image_name} {model_dir}")