大规模部署深度学习模型时,有效利用底层硬件以最大限度地提高性能和成本效益至关重要。 对于需要高吞吐量和低延迟的生产工作负载,选择 亚马逊弹性计算云 (EC2)实例、模型服务堆栈和部署架构非常重要。 低效的架构可能会导致加速器的利用率不佳以及不必要的高生产成本。
在这篇文章中,我们将引导您完成在 AWS Inferentia 设备(可在 Amazon EC2 上找到)上部署 FastAPI 模型服务器的过程。 信息1 和亚马逊EC 信息2 实例)。 我们还演示了托管一个示例模型,该模型在所有 NeuronCore 上并行部署,以最大限度地提高硬件利用率。
解决方案概述
FastAPI 是一个用于为 Python 应用程序提供服务的开源 Web 框架,它比 Flask 和 Django 等传统框架要快得多。 它利用一个 异步服务器网关接口 (ASGI)而不是广泛使用的 Web服务器网关接口 (WSGI)。 ASGI 异步处理传入请求,而 WSGI 则顺序处理请求。 这使得 FastAPI 成为处理延迟敏感请求的理想选择。 您可以使用 FastAPI 部署一个服务器,该服务器在 Inferentia (Inf1/Inf2) 实例上托管端点,该实例通过指定端口侦听客户端请求。
我们的目标是通过最大限度地利用硬件,以最低的成本实现最高的性能。 这使我们能够用更少的加速器处理更多的推理请求。 每个 AWS Inferentia1 设备包含四个 NeuronCores-v1,每个 AWS Inferentia2 设备包含两个 NeuronCores-v2。 这 AWS 神经元 SDK 允许我们并行利用每个 NeuronCore,这使我们能够更好地控制并行加载和推断四个或更多模型,而无需牺牲吞吐量。
使用 FastAPI,您可以选择 Python Web 服务器(Gunicorn, 优维康, 超级玉米, 芫)。 这些 Web 服务器在底层机器学习 (ML) 模型之上提供抽象层。 发出请求的客户端的好处是不关心托管模型。 客户端不需要知道服务器下已部署的模型名称或版本; 端点名称现在只是加载和运行模型的函数的代理。 相比之下,在特定于框架的服务工具(例如 TensorFlow Serving)中,模型的名称和版本是端点名称的一部分。 如果服务器端的模型发生变化,客户端必须知道并相应地更改其对新端点的 API 调用。 因此,如果您不断发展版本模型,例如在 A/B 测试的情况下,那么使用具有 FastAPI 的通用 Python Web 服务器是服务模型的便捷方法,因为端点名称是静态的。
ASGI 服务器的作用是生成指定数量的工作线程来侦听客户端请求并运行推理代码。 服务器的一项重要功能是确保请求的工作人员数量可用且处于活动状态。 如果一个worker被杀死,服务器必须启动一个新的worker。 在这种情况下,服务器和工作人员可以通过它们的 Unix 进程 ID (PID) 来标识。 对于这篇文章,我们使用 超级玉米 服务器,这是 Python Web 服务器的流行选择。
在这篇文章中,我们分享了在 AWS Inferentia NeuronCores 上使用 FastAPI 部署深度学习模型的最佳实践。 我们展示了您可以在可以同时调用的单独 NeuronCore 上部署多个模型。 此设置提高了吞吐量,因为可以同时推断多个模型,并且 NeuronCore 利用率得到了充分优化。 该代码可以在 GitHub回购。 下图显示了如何在 EC2 Inf2 实例上设置解决方案的架构。
相同的架构适用于 EC2 Inf1 实例类型,只不过它有四个核心。 所以这稍微改变了架构图。
AWS Inferentia NeuronCores
让我们更深入地了解 AWS Neuron 提供的用于与 NeuronCore 交互的工具。 下表显示了每个 Inf1 和 Inf2 实例类型中的 NeuronCore 数量。 主机 vCPU 和系统内存在所有可用的 NeuronCore 之间共享。
实例大小 | # Inferentia 加速器 | # NeuronCores-v1 | 虚拟CPU | 内存 (GiB) |
Inf1.xlarge | 1 | 4 | 4 | 8 |
Inf1.2x大 | 1 | 4 | 8 | 16 |
Inf1.6x大 | 4 | 16 | 24 | 48 |
Inf1.24x大 | 16 | 64 | 96 | 192 |
实例大小 | # Inferentia 加速器 | # NeuronCores-v2 | 虚拟CPU | 内存 (GiB) |
Inf2.xlarge | 1 | 2 | 4 | 32 |
Inf2.8x大 | 1 | 2 | 32 | 32 |
Inf2.24x大 | 6 | 12 | 96 | 192 |
Inf2.48x大 | 12 | 24 | 192 | 384 |
与 Inf2 实例中的 NeuronCore-v2 相比,Inf1 实例包含新的 NeuronCores-v1。 尽管内核较少,但它们能够提供比 Inf4 实例高 10 倍的吞吐量和低 1 倍的延迟。 Inf2 实例非常适合深度学习工作负载,例如生成式 AI、OPT/GPT 系列中的大型语言模型 (LLM) 以及稳定扩散等视觉转换器。
Neuron 运行时负责在 Neuron 设备上运行模型。 Neuron Runtime 决定哪个 NeuronCore 将运行哪个模型以及如何运行它。 Neuron 运行时的配置通过使用来控制 环境变量 在流程层面。 默认情况下,Neuron 框架扩展将代表用户处理 Neuron 运行时配置; 然而,显式配置也可以实现更优化的行为。
两个流行的环境变量是 NEURON_RT_NUM_CORES
和 NEURON_RT_VISIBLE_CORES
。 通过这些环境变量,Python 进程可以绑定到 NeuronCore。 和 NEURON_RT_NUM_CORES
,可以为一个进程保留指定数量的核心,并且 NEURON_RT_VISIBLE_CORES
,可以保留一定范围的 NeuronCore。 例如, NEURON_RT_NUM_CORES=2 myapp.py
将保留两个核心并且 NEURON_RT_VISIBLE_CORES=’0-2’ myapp.py
将保留零个、一个和两个核心 myapp.py
。 您也可以跨设备(AWS Inferentia 芯片)预留 NeuronCore。 所以, NEURON_RT_VISIBLE_CORES=’0-5’ myapp.py
将保留前四个核心 device1
和一个核心 device2
在 Ec2 Inf1 实例类型中。 同样,在 EC2 Inf2 实例类型上,此配置将保留两个跨核心 device1
和 device2
和一个核心 device3
。 下表总结了这些变量的配置。
名称 | 课程描述 | Type | 期望值 | 默认值 | 实时版本 |
NEURON_RT_VISIBLE_CORES |
该过程所需的特定 NeuronCore 范围 | 整数范围(如 1-3) | 系统中 0 到 Max NeuronCore 之间的任何值或范围 | 不包含 | 2.0+ |
NEURON_RT_NUM_CORES |
流程所需的 NeuronCore 数量 | 整数 | 系统中从 1 到 Max NeuronCore 的值 | 0,解释为“全部” | 2.0+ |
有关所有环境变量的列表,请参阅 神经元运行时配置.
默认情况下,加载模型时,除非前面的环境变量明确说明,否则模型会加载到 NeuronCore 0,然后加载到 NeuronCore 1。 如前所述,NeuronCore 共享可用的主机 vCPU 和系统内存。 因此,部署在每个 NeuronCore 上的模型将争夺可用资源。 如果模型在很大程度上利用 NeuronCore,这不会成为问题。 但如果模型仅部分在 NeuronCore 上运行,其余部分在主机 vCPU 上运行,那么考虑每个 NeuronCore 的 CPU 可用性就变得很重要。 这也会影响实例的选择。
下表显示了在将一个模型部署到每个 NeuronCore 时每个模型可用的主机 vCPU 和系统内存的数量。 根据您的应用程序的 NeuronCore 使用情况、vCPU 和内存使用情况,建议运行测试以找出哪种配置最适合您的应用程序。 这 神经元顶部工具 可以帮助可视化核心利用率以及设备和主机内存利用率。 根据这些指标可以做出明智的决定。 我们在本博客末尾演示了 Neuron Top 的使用。
实例大小 | # Inferentia 加速器 | # 楷模 | vCPU/型号 | 内存/型号 (GiB) |
Inf1.xlarge | 1 | 4 | 1 | 2 |
Inf1.2x大 | 1 | 4 | 2 | 4 |
Inf1.6x大 | 4 | 16 | 1.5 | 3 |
Inf1.24x大 | 16 | 64 | 1.5 | 3 |
实例大小 | # Inferentia 加速器 | # 楷模 | vCPU/型号 | 内存/型号 (GiB) |
Inf2.xlarge | 1 | 2 | 2 | 8 |
Inf2.8x大 | 1 | 2 | 16 | 64 |
Inf2.24x大 | 6 | 12 | 8 | 32 |
Inf2.48x大 | 12 | 24 | 8 | 32 |
要自己测试Neuron SDK功能,请查看最新的 PyTorch 的神经元功能.
系统设置
以下是用于此解决方案的系统设置:
设置解决方案
我们需要做一些事情来设置解决方案。 首先创建一个 IAM 角色,您的 EC2 实例将假定该角色将允许其进行推送和拉取 Amazon Elastic Container注册.
步骤 1:设置 IAM 角色
- 首先登录控制台并访问 IAM > 角色 > 创建角色
- 选择受信任实体类型
AWS Service
- 选择 EC2 作为用例下的服务
- 点击 下一页 您将能够看到所有可用的政策
- 出于此解决方案的目的,我们将授予 EC2 实例对 ECR 的完全访问权限。 过滤器 AmazonEC2ContainerRegistryFullAccess 然后选择它。
- 按下一步并命名角色
inf-ecr-access
注意:我们附加的策略为 EC2 实例提供了对 Amazon ECR 的完全访问权限。 我们强烈建议遵循 最小特权原则 用于生产工作负载。
步骤 2:设置 AWS CLI
如果您使用上面列出的规定的深度学习 AMI,它会安装 AWS CLI。 如果您使用不同的 AMI(Amazon Linux 2023、Base Ubuntu 等),请按照以下步骤安装 CLI 工具 本指南.
安装 CLI 工具后,使用以下命令配置 CLI aws configure
。 如果您有访问密钥,则可以在此处添加它们,但不一定需要它们来与 AWS 服务交互。 我们依靠 IAM 角色来做到这一点。
备注:我们需要输入至少一个值(默认区域或默认格式)来创建默认配置文件。 对于这个例子,我们将使用 us-east-2
作为该地区和 json
作为默认输出。
克隆 Github 存储库
GitHub回购 提供在 AWS Inferentia 实例上的 NeuronCore 上使用 FastAPI 部署模型所需的所有脚本。 此示例使用 Docker 容器来确保我们可以创建可重用的解决方案。 此示例中包含以下内容 配置属性 文件供用户提供输入。
配置文件需要用户为 Docker 映像和 Docker 容器定义名称前缀。 这 build.sh
脚本中 fastapi
和 trace-model
文件夹使用它来创建 Docker 映像。
在 AWS Inferentia 上编译模型
我们将从跟踪模型并生成 PyTorch Torchscript .pt 文件开始。 首先访问 trace-model
目录并修改 .env 文件。 根据您选择的实例类型,修改 CHIP_TYPE
字幕可视电话用于 .env
文件。 作为示例,我们将选择 Inf2 作为指南。 相同的步骤适用于 Inf1 的部署过程。
接下来在同一文件中设置默认区域。 该区域将用于创建 ECR 存储库,并且 Docker 镜像将被推送到该存储库。 同样在这个文件夹中,我们提供了跟踪所需的所有脚本 bert-base-uncased
AWS Inferentia 上的模型。 该脚本可用于大多数可用模型 拥抱脸。 该 Dockerfile 具有使用 Neuron 运行模型的所有依赖项并运行 跟踪模型.py 代码作为入口点。
神经元编译解释
Neuron SDK 的 API 与 PyTorch Python API 非常相似。 这 torch.jit.trace()
PyTorch 中的模型和样本输入张量作为参数。 样本输入被馈送到模型,并且当输入通过模型层时调用的操作被记录为 火炬脚本。 要了解有关 PyTorch 中的 JIT 跟踪的更多信息,请参阅以下内容 文件.
就像 torch.jit.trace()
,您可以使用以下 inf1 实例代码检查您的模型是否可以在 AWS Inferentia 上编译。
对于 inf2,该库称为 torch_neuronx
。 下面介绍了如何针对 inf2 实例测试模型编译。
创建跟踪实例后,我们可以像这样传递示例张量输入:
最后将生成的 TorchScript 输出保存在本地磁盘上
如前面的代码所示,您可以使用 compiler_args
和 optimizations
以优化部署。 有关参数的详细列表 torch.neuron.trace
API,参考 PyTorch-Neuron 跟踪 python API.
请记住以下要点:
- 截至撰写本文时,Neuron SDK 不支持动态张量形状。 因此,必须针对不同的输入形状单独编译模型。 有关使用分桶对可变输入形状运行推理的更多信息,请参阅 使用分桶对可变输入形状运行推理.
- 如果您在编译模型时遇到内存不足问题,请尝试在具有更多 vCPU 或内存的 AWS Inferentia 实例上编译模型,甚至在大型 c6i 或 r6i 实例上编译模型,因为编译仅使用 CPU。 编译后,跟踪模型可能可以在较小的 AWS Inferentia 实例大小上运行。
构建过程说明
现在我们将通过运行来构建这个容器 编译文件。 构建脚本文件只需通过拉取基础深度学习容器映像并安装 HuggingFace 来创建 Docker 映像 transformers
包裹。 基于 CHIP_TYPE
在指定 .env
文件, docker.properties
文件决定适当的 BASE_IMAGE
。 这 BASE_IMAGE
指向 AWS 提供的 Neuron Runtime 深度学习容器映像。
它可以通过私有 ECR 存储库获得。 在拉取镜像之前,我们需要登录并获取临时 AWS 凭证。
备注:我们需要将区域标志指定的命令和存储库 URI 中列出的区域替换为我们放入的区域 .ENV 文件中。
为了使这个过程更容易,我们可以使用 fetch-credentials.sh
文件。 该区域将自动从 .env 文件中获取。
接下来,我们将使用脚本推送图像 推.sh。 推送脚本在 Amazon ECR 中为您创建一个存储库并推送容器映像。
最后,当构建并推送镜像时,我们可以通过运行将其作为容器运行 运行 和尾部运行日志 日志文件。 在编译器日志中(请参见下面的屏幕截图),您将看到在 Neuron 上编译的算术运算符的百分比以及在 Neuron 上成功编译的模型子图的百分比。 屏幕截图显示了编译器日志 bert-base-uncased-squad2
模型。 日志显示 95.64% 的算术运算符已编译,并且还提供了在 Neuron 上编译的运算符和不支持的运算符的列表。
这是清单 最新 PyTorch Neuron 包中所有支持的运算符。 相似地, 这是清单 最新 PyTorch Neuronx 包中所有支持的运算符。
使用 FastAPI 部署模型
模型编译后,跟踪的模型将出现在 trace-model
文件夹。 在此示例中,我们将跟踪模型的批量大小设置为 1。我们在此考虑批量大小为 1,以考虑那些不可行或不需要更高批量大小的用例。 对于需要更高批量大小的用例, 火炬.神经元.DataParallel (对于 Inf1)或 torch.neuronx.DataParallel (对于 Inf2)API 也可能有用。
快速API 文件夹提供了使用 FastAPI 部署模型所需的所有脚本。 要部署模型而不进行任何更改,只需运行 部署文件 脚本,它将构建一个 FastAPI 容器映像,在指定数量的核心上运行容器,并在每个 FastAPI 模型服务器中部署每个服务器指定数量的模型。 该文件夹还包含一个 .env
文件,修改它以反映正确的 CHIP_TYPE
和 AWS_DEFAULT_REGION
.
备注:FastAPI 脚本依赖于用于构建、推送和运行图像作为容器的相同环境变量。 FastAPI 部署脚本将使用这些变量的最后已知值。 因此,如果您最后跟踪 Inf1 实例类型的模型,该模型将通过这些脚本进行部署。
fastapi-server.py 负责托管服务器并将请求发送到模型的文件执行以下操作:
- 从属性文件中读取每个服务器的模型数量以及编译模型的位置
- 将可见的 NeuronCore 设置为 Docker 容器的环境变量,并读取环境变量以指定要使用的 NeuronCore
- 提供推理API
bert-base-uncased-squad2
模型 -
jit.load()
,加载配置中指定的每台服务器的模型数量,并将模型和所需的分词器存储在全局字典中
通过此设置,设置 API 来列出每个 NeuronCore 中存储的模型以及模型数量将相对容易。 同样,可以编写 API 来从特定 NeuronCore 中删除模型。
Dockerfile 用于构建 FastAPI 容器的构建基于我们为跟踪模型而构建的 Docker 映像。 这就是为什么 docker.properties 文件指定用于跟踪模型的 Docker 映像的 ECR 路径。 在我们的设置中,所有 NeuronCore 上的 Docker 容器都是相似的,因此我们可以构建一个映像并从一个映像运行多个容器。 为了避免任何入口点错误,我们指定 ENTRYPOINT ["/usr/bin/env"]
在运行之前在 Dockerfile 中 startup.sh
脚本,看起来像 hypercorn fastapi-server:app -b 0.0.0.0:8080
。 该启动脚本对于所有容器都是相同的。 如果您使用与跟踪模型相同的基础映像,则只需运行 build.sh 脚本即可构建此容器。 这 push.sh
用于跟踪模型的脚本与以前相同。 修改后的Docker镜像和容器名称由 docker.properties
文件中。
run.sh file
做以下事情:
- 从以下位置读取 Docker 镜像和容器名称 文件,依次读取
config.properties
文件,其中有一个num_cores
用户设置 - 从 0 开始循环
num_cores
对于每个核心:- 设置端口号和设备号
- 设置
NEURON_RT_VISIBLE_CORES
环境变量 - 指定卷挂载
- 运行 Docker 容器
为了清楚起见,在 NeuronCore 0 中部署 Inf1 的 Docker 运行命令将类似于以下代码:
在 NeuronCore 5 中部署的运行命令类似于以下代码:
部署容器后,我们使用 run_apis.py 脚本,它在并行线程中调用 API。 该代码设置为调用部署的六个模型,每个 NeuronCore 上一个,但可以轻松更改为不同的设置。 我们从客户端调用 API 如下:
监控 NeuronCore
部署模型服务器后,为了监控 NeuronCore 的利用率,我们可以使用 neuron-top
实时观察每个NeuronCore的利用率。 神经元顶部 是 Neuron SDK 中的一个 CLI 工具,用于提供 NeuronCore、vCPU 和内存利用率等信息。 在单独的终端中,输入以下命令:
您的输出应类似于下图。 在此场景中,我们指定在 Inf2.xlarge 实例上的每个服务器上使用两个 NeuronCore 和两个模型。 以下屏幕截图显示两个大小各为 287.8MB 的模型加载在两个 NeuronCore 上。 总共加载了 4 个模型,可以看到使用的设备内存为 1.3 GB。 使用箭头键在不同设备上的 NeuronCore 之间移动
同样,在 Inf1.16xlarge 实例类型上,我们总共看到加载了 12 个模型(2 个核心上每个核心 6 个模型)。 总共消耗2.1GB内存,每个模型大小为177.2MB。
运行后 run_apis.py 脚本中,您可以看到六个 NeuronCore 中每一个的利用率百分比(请参见以下屏幕截图)。 您还可以查看系统 vCPU 使用率和运行时 vCPU 使用率。
以下屏幕截图显示了 Inf2 实例的核心使用百分比。
同样,此屏幕截图显示了 inf1.6xlarge 实例类型中的核心利用率。
清理
为了清理您创建的所有 Docker 容器,我们提供了 清理.sh 删除所有正在运行和已停止的容器的脚本。 该脚本将删除所有容器,因此如果您想保持某些容器运行,请不要使用它。
结论
生产工作负载通常具有高吞吐量、低延迟和成本要求。 未能充分利用加速器的低效架构可能会导致不必要的高生产成本。 在这篇文章中,我们展示了如何通过 FastAPI 最佳地利用 NeuronCore,以最小的延迟最大化吞吐量。 我们已在我们的网站上发布了说明 GitHub回购。 借助此解决方案架构,您可以在每个 NeuronCore 中部署多个模型,并在不同的 NeuronCore 上并行操作多个模型,而不会损失性能。 有关如何使用以下服务大规模部署模型的更多信息 Amazon Elastic Kubernetes服务 (Amazon EKS),请参阅 使用 AWS Inferentia 在 Amazon EKS 上以低于每小时 3,000 美元的价格提供 50 个深度学习模型.
关于作者
安库尔·斯里瓦斯塔瓦(Ankur Srivastava) 是 ML 框架团队的高级解决方案架构师。 他专注于帮助客户在 AWS 上进行大规模的自我管理分布式训练和推理。 他的经验包括工业预测性维护、数字双胞胎、概率设计优化,并完成了莱斯大学机械工程的博士学位和麻省理工学院的博士后研究。
董家强 是 AWS Annapurna Labs 的高级解决方案架构师。 他专门从事大型深度学习模型在云中的大规模训练和部署。 他拥有博士学位。 在达拉斯德克萨斯大学西南医学中心获得分子生物物理学博士学位。 他曾在 AWS 峰会和 AWS Reinvent 上发表过演讲。 现在,他帮助客户在 AWS 云中训练和部署大型 PyTorch 和 TensorFlow 模型。 他是两本书的作者: 学习 TensorFlow 企业版 和 TensorFlow 2 袖珍参考.
普罗诺伊·乔普拉 是 AWS 初创公司生成 AI 团队的高级解决方案架构师。 他专门设计和开发物联网和机器学习解决方案。 他过去曾与他人共同创办过两家初创公司,并喜欢亲自参与物联网、人工智能/机器学习和无服务器领域的项目。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- PlatoData.Network 垂直生成人工智能。 赋予自己力量。 访问这里。
- 柏拉图爱流。 Web3 智能。 知识放大。 访问这里。
- 柏拉图ESG。 汽车/电动汽车, 碳, 清洁科技, 能源, 环境, 太阳能, 废物管理。 访问这里。
- 块偏移量。 现代化环境抵消所有权。 访问这里。
- Sumber: https://aws.amazon.com/blogs/machine-learning/optimize-aws-inferentia-utilization-with-fastapi-and-pytorch-models-on-amazon-ec2-inf1-inf2-instances/
- :具有
- :是
- :不是
- :在哪里
- $UP
- 000
- 1
- 1.3
- 10
- 100
- 12
- 13
- 15%
- 2023
- 7
- 8
- 91
- a
- Able
- 关于
- 以上
- 抽象化
- 加速器
- ACCESS
- 访问
- 因此
- 账号管理
- 横过
- 要积极。
- 加
- 驳
- AI
- AI / ML
- 所有类型
- 让
- 允许
- 还
- Amazon
- Amazon EC2
- 亚马逊网络服务
- an
- 和
- 任何
- API
- APIs
- 应用
- 应用领域
- 应用领域
- 使用
- 适当
- 架构
- 保健
- 参数
- AS
- 承担
- At
- 作者
- 自动
- 可用性
- 可使用
- 避免
- AWS
- AWS 推理
- 基地
- 基于
- BE
- 因为
- 成为
- 很
- before
- 代表
- 行为
- 作为
- 得益
- 好处
- 最佳
- 最佳实践
- 之间
- 生物物理学
- 位
- 博客
- 书籍
- 建立
- 建筑物
- 建
- 但是
- by
- 呼叫
- 被称为
- 呼叫
- CAN
- 能力
- 能力
- 关心
- 案件
- 例
- Center
- 更改
- 变
- 更改
- 查
- 碎屑
- 选择
- 选择
- 明晰
- 客户
- 密切
- 云端技术
- 码
- 购买的订单均
- 对照
- 竞争
- 完成
- 计算
- 配置
- 考虑
- 考虑
- 安慰
- 消费
- 包含
- 容器
- 集装箱
- 包含
- 上下文
- 一直
- 对比
- 控制
- 受控
- 便捷
- 核心
- 正确
- 价格
- 成本
- 可以
- 情侣
- 创建信息图
- 创建
- 创建
- 创造
- 资历
- 关键
- 合作伙伴
- 达拉斯
- 决定
- 深
- 深入学习
- 更深
- 默认
- 演示
- 根据
- 部署
- 部署
- 部署
- 部署
- 设计
- 指定
- 尽管
- 详细
- 确定
- 发展
- 设备
- 设备
- 不同
- 扩散
- DIG
- 数字
- 数字双胞胎
- 分布
- 分布式培训
- Django的
- do
- 码头工人
- 不
- 不会
- 域
- 别
- 动态
- 每
- 此前
- 更容易
- 容易
- 易
- EC
- 只
- 结束
- 端点
- 从事
- 工程师
- 确保
- 输入
- 实体
- 条目
- 环境
- 故障
- 等
- 甚至
- 所有的
- 演变
- 例子
- 除
- 体验
- 扩展
- 面部彩妆
- 家庭
- 快
- 可行
- 特征
- 美联储
- 少
- 数字
- 文件
- 过滤
- 终于
- 找到最适合您的地方
- (名字)
- 重点
- 以下
- 如下
- 针对
- 格式
- 发现
- 四
- 骨架
- 框架
- 止
- ,
- 充分
- 功能
- 网关
- 生成的
- 生成式人工智能
- 得到
- GitHub上
- 给
- 给
- 全球
- 去
- 指南
- 处理
- 动手
- 硬件
- 有
- he
- 帮助
- 帮助
- 帮助
- 相关信息
- 高
- 更高
- 最高
- 他的
- 主持人
- 托管
- 托管
- 为了
- 创新中心
- How To
- 但是
- HTML
- HTTP
- HTTPS
- 拥抱脸
- ID
- 理想
- 确定
- if
- 图片
- 图片
- 进口
- 重要
- in
- 包括
- 包括
- 来电
- 增加
- 产业
- 低效
- 信息
- 通知
- 输入
- 输入
- 安装
- 安装
- 安装
- 例
- 代替
- 研究所
- 说明
- 相互作用
- 成
- 调用
- 物联网
- 问题
- 问题
- IT
- 它的
- JIT
- JPG
- 只是
- 保持
- 键
- 知道
- 已知
- 实验室
- 语言
- 大
- (姓氏)
- 潜伏
- 最新
- 发射
- 层
- 层
- 铅
- 学习用品
- 学习
- Level
- 自学资料库
- 喜欢
- Linux的
- 清单
- 已发布
- 小
- 更深一点
- LLM
- 装载
- 负载
- 本地
- 圖書分館的位置
- 记录
- 登录
- 看
- 看起来像
- LOOKS
- 失去
- 低
- 降低
- 最低
- 机
- 机器学习
- 制成
- 保养
- 使
- 制作
- 制作
- 许多
- 美国马萨诸塞州
- 麻省理工学院
- 最大
- 生产力
- 最多
- 可能..
- 机械
- 医生
- 内存
- 指标
- 介意
- 最低限度
- ML
- 模型
- 模型
- 改性
- 修改
- 分子
- 显示器
- 更多
- 最先进的
- 移动
- 许多
- 多
- 必须
- 姓名
- 一定
- 必要
- 需求
- 打印车票
- 需要
- 全新
- 下页
- 现在
- 数
- 目标
- 观察
- of
- 提供
- 经常
- on
- 一旦
- 一
- 仅由
- 到
- 开放源码
- 操作
- 运营
- 运营商
- 反对
- 优化
- 优化
- 优化
- or
- 我们的
- 输出
- 产量
- 超过
- 包
- 并行
- 部分
- 通过
- 过去
- 径
- 为
- 百分比
- 性能
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 点
- 点
- 政策
- 政策
- 热门
- 可能
- 帖子
- 做法
- 当下
- 私立
- 大概
- 过程
- 过程
- 生产
- 生产
- 本人简介
- 项目
- 提供
- 提供
- 提供
- 代理
- 出版
- 拉
- 目的
- 推
- 推
- 放
- 蟒蛇
- pytorch
- 范围
- 真实
- 实时的
- 建议
- 建议
- 记录
- 反映
- 地区
- 相对
- 依靠
- 依托
- 遗迹
- 去掉
- 更换
- 知识库
- 要求
- 必须
- 岗位要求
- 研究
- 酷似
- 保留区(Reserve)
- 保留的
- 资源
- 响应
- 提供品牌战略规划
- REST的
- 导致
- 可重复使用
- 米类
- 角色
- 角色
- 运行
- 运行
- 运行
- 牺牲
- 同
- 保存
- 鳞片
- 脚本
- 脚本
- SDK
- 看到
- 选择
- 发送
- 前辈
- 敏感
- 分开
- 无服务器
- 服务器
- 服务
- 特色服务
- 服务
- 集
- 设置
- 格局
- 形状
- Share
- 共用的,
- 应该
- 显示
- 显示
- 如图
- 作品
- 侧
- 类似
- 同样
- 只是
- SIX
- 尺寸
- 尺寸
- 小
- So
- 方案,
- 解决方案
- 一些
- 专业
- 具体的
- 指定
- 说
- 稳定
- 堆
- 开始
- 启动
- 初创企业
- 说
- 步骤
- 停止
- 存储
- 商店
- 非常
- 研究
- 顺利
- 这样
- 峰会
- SUPPORT
- 支持
- 肯定
- 系统
- 表
- 采取
- 拍摄
- 需要
- 团队
- 专业技术
- 临时
- tensorflow
- 终端
- test
- 测试
- 测试
- 德州
- 比
- 这
- 其
- 他们
- 然后
- 因此
- 博曼
- 他们
- 事
- Free Introduction
- 那些
- 通过
- 吞吐量
- 绑
- 次
- 至
- 今晚
- 工具
- 工具
- 最佳
- 火炬
- 合计
- 追踪
- 追踪
- 传统
- 培训
- 产品培训
- 变形金刚
- 信任
- 尝试
- 转
- 双胞胎
- 二
- 类型
- Ubuntu
- 下
- 相关
- 大学
- UNIX
- 不必要的
- 上
- us
- 用法
- 使用
- 用过的
- 用户
- 用户
- 使用
- 运用
- 利用
- 利用
- 利用
- 折扣值
- 价值观
- 版本
- 非常
- 可见
- 愿景
- 体积
- 想
- 是
- 方法..
- we
- 卷筒纸
- Web服务器
- Web服务
- 井
- 为
- ,尤其是
- 这
- 为什么
- 广泛
- 将
- 中
- 也完全不需要
- 工人
- 工人
- 将
- 写作
- 书面
- 完全
- 您一站式解决方案
- 你自己
- 和风网
- 零