.. image:: https://github.com/aws/sagemaker-python-sdk/raw/master/branding/icon/sagemaker-banner.png :height: 100px :alt: SageMaker
==================== SageMaker Python SDK
.. image:: https://img.shields.io/pypi/v/sagemaker.svg :target: https://pypi.python.org/pypi/sagemaker :alt: 最新版本
.. image:: https://img.shields.io/conda/vn/conda-forge/sagemaker-python-sdk.svg :target: https://anaconda.org/conda-forge/sagemaker-python-sdk :alt: Conda-Forge 版本
.. image:: https://img.shields.io/pypi/pyversions/sagemaker.svg :target: https://pypi.python.org/pypi/sagemaker :alt: 支持的Python版本
.. image:: https://img.shields.io/badge/code_style-black-000000.svg :target: https://github.com/python/black :alt: 代码风格: black
.. image:: https://readthedocs.org/projects/sagemaker/badge/?version=stable :target: https://sagemaker.readthedocs.io/en/stable/ :alt: 文档状态
.. image:: https://github.com/aws/sagemaker-python-sdk/actions/workflows/codebuild-ci-health.yml/badge.svg :target: https://github.com/aws/sagemaker-python-sdk/actions/workflows/codebuild-ci-health.yml :alt: CI 健康状态
SageMaker Python SDK是一个用于在Amazon SageMaker上训练和部署机器学习模型的开源库。
使用该SDK,您可以使用流行的深度学习框架Apache MXNet和TensorFlow来训练和部署模型。 您还可以使用Amazon算法来训练和部署模型,这些算法是核心机器学习算法的可扩展实现,已针对SageMaker和GPU训练进行了优化。 如果您有自己的算法构建在与SageMaker兼容的Docker容器中,您也可以使用这些算法来训练和托管模型。
有关详细文档,包括API参考,请参阅Read the Docs <https://sagemaker.readthedocs.io>
_。
目录
#. 安装SageMaker Python SDK <#installing-the-sagemaker-python-sdk>
__
#. 使用SageMaker Python SDK <https://sagemaker.readthedocs.io/en/stable/overview.html>
__
#. 使用MXNet <https://sagemaker.readthedocs.io/en/stable/using_mxnet.html>
__
#. 使用TensorFlow <https://sagemaker.readthedocs.io/en/stable/using_tf.html>
__
#. 使用Chainer <https://sagemaker.readthedocs.io/en/stable/using_chainer.html>
__
#. 使用PyTorch <https://sagemaker.readthedocs.io/en/stable/using_pytorch.html>
__
#. 使用Scikit-learn <https://sagemaker.readthedocs.io/en/stable/using_sklearn.html>
__
#. 使用XGBoost <https://sagemaker.readthedocs.io/en/stable/using_xgboost.html>
__
#. SageMaker强化学习估算器 <https://sagemaker.readthedocs.io/en/stable/using_rl.html>
__
#. SageMaker SparkML服务 <#sagemaker-sparkml-serving>
__
#. Amazon SageMaker内置算法估算器 <src/sagemaker/amazon/README.rst>
__
#. 使用SageMaker AlgorithmEstimators <https://sagemaker.readthedocs.io/en/stable/overview.html#using-sagemaker-algorithmestimators>
__
#. 使用SageMaker模型包 <https://sagemaker.readthedocs.io/en/stable/overview.html#consuming-sagemaker-model-packages>
__
#. 使用自定义Docker容器的SageMaker估算器 <https://sagemaker.readthedocs.io/en/stable/overview.html#byo-docker-containers-with-sagemaker-estimators>
__
#. SageMaker自动模型调优 <https://sagemaker.readthedocs.io/en/stable/overview.html#sagemaker-automatic-model-tuning>
__
#. SageMaker批量转换 <https://sagemaker.readthedocs.io/en/stable/overview.html#sagemaker-batch-transform>
__
#. 使用VPC进行安全训练和推理 <https://sagemaker.readthedocs.io/en/stable/overview.html#secure-training-and-inference-with-vpc>
__
#. 自带模型 <https://sagemaker.readthedocs.io/en/stable/overview.html#byo-model>
__
#. 推理管道 <https://sagemaker.readthedocs.io/en/stable/overview.html#inference-pipelines>
__
#. Apache Airflow中的Amazon SageMaker操作符 <https://sagemaker.readthedocs.io/en/stable/using_workflow.html>
__
#. SageMaker Autopilot <src/sagemaker/automl/README.rst>
__
#. 模型监控 <https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_monitoring.html>
__
#. SageMaker调试器 <https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_debugger.html>
__
#. SageMaker处理 <https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_processing.html>
__
安装SageMaker Python SDK
SageMaker Python SDK已发布到PyPI,可以使用pip安装最新版本的SageMaker Python SDK,如下所示: ::
pip install sagemaker==<从https://pypi.org/project/sagemaker/获取的最新版本>
您也可以通过克隆此存储库并在存储库的根目录中运行pip安装命令来从源代码安装:
::
git clone https://github.com/aws/sagemaker-python-sdk.git
cd sagemaker-python-sdk
pip install .
支持的操作系统
SageMaker Python SDK支持Unix/Linux和Mac。
支持的Python版本
~~~~~~~~~~~~~~~~~~~~~~~~~
SageMaker Python SDK经过以下版本的测试:
- Python 3.8
- Python 3.9
- Python 3.10
- Python 3.11
遥测
~~~~~~~~~~~~~~~
``sagemaker``库启用了遥测功能,以帮助我们更好地了解用户需求、诊断问题并提供新功能。此遥测功能会跟踪各种SageMaker功能的使用情况。
如果您不希望参与遥测,可以通过在SDK默认配置中将``TelemetryOptOut``参数设置为``true``来轻松退出。有关详细说明,请访问`使用SageMaker Python SDK配置和使用默认值 <https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk>`__。
AWS权限
~~~~~~~~~~~~~~~
作为托管服务,Amazon SageMaker代表您在由Amazon SageMaker管理的AWS硬件上执行操作。
Amazon SageMaker只能执行用户允许的操作。
您可以在`AWS文档 <https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html>`__中阅读更多关于需要哪些权限的信息。
除了使用SageMaker所需的权限外,SageMaker Python SDK不应需要任何其他权限。
但是,如果您使用带有路径的IAM角色,则应授予``iam:GetRole``权限。
许可
~~~~~~~~~
SageMaker Python SDK根据Apache 2.0许可证获得许可。它是Amazon.com, Inc.或其附属公司的版权所有。保留所有权利。许可证可在以下位置获得:
http://aws.amazon.com/apache2.0/
运行测试
~~~~~~~~~~~~~
SageMaker Python SDK包含单元测试和集成测试。
您可以通过运行 :code:`pip install --upgrade .[test]` 或对于Zsh用户: :code:`pip install --upgrade .\[test\]` 来安装运行测试所需的库。
**单元测试**
我们使用tox运行单元测试,tox是一个允许您为多个Python版本运行单元测试的程序,同时还可以确保代码符合我们的样式指南。我们使用`所有支持的Python版本 <#supported-python-versions>`_运行tox,因此要以与我们相同的配置运行单元测试,您需要安装这些Python版本的解释器。
要使用tox运行单元测试,请运行:
::
tox tests/unit
**集成测试**
要运行集成测试,必须满足以下先决条件
1. AWS账户凭证在环境中可用,供boto3客户端使用。
2. AWS账户有一个名为 :code:`SageMakerRole` 的IAM角色。
它应该附加AmazonSageMakerFullAccess策略以及一个具有`使用Elastic Inference所需权限 <https://docs.aws.amazon.com/sagemaker/latest/dg/ei-setup.html>`__的策略。
3. 要运行remote_function测试,应创建虚拟ecr存储库。可以通过运行以下命令来创建:
:code:`aws ecr create-repository --repository-name remote-function-dummy-container`
我们建议有选择地只运行您想运行的集成测试。您可以通过以下方式按单个测试函数名称进行过滤:
::
tox -- -k 'test_i_care_about'
您也可以通过运行以下命令来运行所有集成测试,这会按顺序运行它们,可能需要一段时间:
::
tox -- tests/integ
您还可以并行运行它们:
::
tox -- -n auto tests/integ
Git钩子
~~~~~~~~~
要启用.githooks目录中的所有git钩子,请在存储库目录中运行以下命令:
::
find .git/hooks -type l -exec rm {} \;
find .githooks -type f -exec ln -sf ../../{} .git/hooks/ \;
要启用单个git钩子,只需将其从.githooks/目录移动到.git/hooks/目录即可。
构建Sphinx文档
~~~~~~~~~~~~~~~~~~~~
设置Python环境,并安装``doc/requirements.txt``中列出的依赖项:
::
# conda
conda create -n sagemaker python=3.7
conda activate sagemaker
conda install sphinx=3.1.1 sphinx_rtd_theme=0.5.0
# pip
pip install -r doc/requirements.txt
克隆/分叉存储库,并安装您的本地版本:
::
pip install --upgrade .
然后 ``cd`` 进入 ``sagemaker-python-sdk/doc`` 目录并运行:
::
make html
您可以通过编辑``doc``目录中的.rst文件来编辑文档中任何页面的模板,然后再次运行``make html``。
使用Python网络服务器预览网站:
::
cd _build/html
python -m http.server 8000
通过访问http://localhost:8000查看网站
SageMaker SparkML服务
-------------------------
使用SageMaker SparkML服务,您现在可以在SageMaker中对SparkML模型进行预测。
为了在SageMaker中托管SparkML模型,应使用``MLeap``库进行序列化。
有关MLeap的更多信息,请参见https://github.com/combust/mleap。
支持的Spark主要版本:3.3(MLeap版本 - 0.20.0)
以下是如何创建``SparkMLModel``类的实例并使用``deploy()``方法创建可用于对训练好的SparkML模型进行预测的端点的示例。
.. code:: python
sparkml_model = SparkMLModel(model_data='s3://path/to/model.tar.gz', env={'SAGEMAKER_SPARKML_SCHEMA': schema})
model_name = 'sparkml-model'
endpoint_name = 'sparkml-endpoint'
predictor = sparkml_model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name=endpoint_name)
部署模型后,我们可以使用``CSV``负载调用端点,如下所示:
.. code:: python
payload = 'field_1,field_2,field_3,field_4,field_5'
predictor.predict(payload)
有关SageMaker SparkML服务识别的不同``content-type``和``Accept``格式以及``schema``结构的更多信息,请参见`SageMaker SparkML服务容器`_。
.. _SageMaker SparkML服务容器: https://github.com/aws/sagemaker-sparkml-serving-container