推理服务器可以通过Docker容器在64位Intel和AMD机器上使用,但不兼容基于Mac OS的设备。要安装,只需拉取容器:
sudo docker pull roboflow/inference-server:cpu
然后运行它:
sudo docker run --net=host roboflow/inference-server:cpu
现在可以使用推理服务器作为托管推理API的替代品(请参阅那些文档中的示例代码片段,这些示例代码片段使用多种编程语言)。使用托管API的示例代码,但将API调用中的URL替换为:
http://{INFERENCE-SERVER-IP}:9001
例如:
base64 YOUR_IMAGE.jpg | curl -d @- "http://10.0.0.1:9001/your-model/42?api_key=YOUR_KEY"
注意:对模型的第一次调用将需要几秒钟来下载权重并初始化它们;随后的预测将会快得多。
在Google Cloud虚拟机上部署
要将Docker容器部署到Google Cloud虚拟机,需要首先创建一个Google Cloud账户并设置一个虚拟机(VM)实例。在这个例子中,通过更改机器类型来设置一个“e2-medium”实例。对于生产工作负载,可能需要选择一个更强大的机器类型。
在创建实例之前,滚动到“启动磁盘”部分并点击“更改”以至少将启动大小增加到50GB。在启动磁盘设置中,还可以更改操作系统。请选择带有默认“Debian 10基于深度学习VM(带有Intel MKL)M101”版本的“Linux上的深度学习”操作系统。
现在可以滚动到底部并点击“创建”来初始化实例。一旦VM运行,可以通过SSH进入实例并在其上安装Docker。点击小的“SSH”连接按钮两次以打开两个终端。将使用其中一个终端来运行Docker容器,另一个终端来运行推理。
在SSH进入Google虚拟机后,可以使用以下命令在机器上拉取并运行CPU推理服务器。等待容器运行并显示“推理服务器已准备好接收流量”。
sudo docker run --net=host roboflow/inference-server:cpu
一旦容器在VM上运行,可以使用VM的内部IP地址来访问它。可能需要配置VM的防火墙规则以允许传入流量到达容器的端口。可以在Google Cloud平台内的VM实例页面中找到“内部IP”。有了这个内部IP,可以在另一个SSH终端上运行以下命令:
base64 YOUR_IMAGE.jpg | curl -d @- "http://[Internal IP]:9001/[Model_ID]/[Version]?api_key=[YOUR_KEY]"
一个成功的curl调用应该触发Docker容器下载Roboflow权重并准备推理引擎。这就是一个成功的推理看起来的样子:
在Google Cloud Run上部署
要安装gcloud cli,首先需要在系统上安装Google Cloud SDK。可以从Google Cloud网站下载Google Cloud SDK。安装SDK后,可以使用gcloud命令来安装gcloud cli。
可以在此处找到安装Google CloudSDK的文档:
安装Google Cloud SDK后,在喜欢的终端中打开以加载Roboflow Docker镜像。
sudo docker run --net=host roboflow/inference-server:cpu
加载Docker镜像后,需要使用gcloud来认证终端。
gcloud auth login
gcloud auth configure-docker
现在终端已经认证,可以使用docker tag和docker push将Roboflow镜像放入Google Cloud Container Registry。
docker tag roboflow/inference-server:cpu gcr.io/[Google-Project-ID]/cpu-inference-server
docker push gcr.io/[Google-Project-ID]/cpu-inference-server
现在roboflow/inference-server:cpu已上传到Google Cloud Container Registry。导航到Cloud Run以在Container Registry中上传的镜像创建服务。点击现有容器部分的“SELECT”,导航到“cpu-inference-server”文件夹并选择最新的构建。
在“Authentication”下检查“Allow unauthenticated invocations”按钮以允许服务作为开放API运行。展开“Container, Connections, Security”部分并将“Container port”号码更改为9001。
滚动到创建服务页面的底部并点击“CREATE”。这将下载Docker容器到服务并运行初始化。一个成功的构建将返回带有绿色勾选的服务名称,表示服务已成功构建并运行了Docker容器。
通过点击希望打开的服务名称来打开Cloud Run服务。将打开“cpu-inference-server”服务。一旦打开,复制服务URL。服务URL将看起来像这样:
https://cpu-inference-server-njsdrsria-uc.a.run.app
有了这个服务URL,就有了运行curl请求和使用Roboflow模型所需的一切。
要运行curl请求,请打开一个终端并使用以下base64命令:
base64 your_image.jpg | curl -d @- "https://[Service_URL]/[MODEL_ID]/[VERSION]?api_key=[YOUR_API_KEY]"
处理大型图像的平铺
在某些情况下,可能需要对非常大的图像进行推理,其中准确性可能会显著降低。在这种情况下,希望推理服务器在运行推理之前将这些图像分割成较小的平铺,以获得更好的准确性。
要使用给定的像素宽度和高度进行平铺,需要使用包含像素尺寸的查询参数来curl推理服务器。将使用该像素尺寸来创建具有这些尺寸的宽度和高度的平铺。查询参数应该看起来像这样:
&tile=500
这将在运行推理之前将图像分割成500x500像素的平铺。
#将图像分割成300x300平铺,然后运行推理
base64 your_img.jpg | curl -d @- "http://localhost:9001/[YOUR MODEL]/[YOUR VERSION]?api_key=[YOUR API KEY]&tile=[YOUR TILE DIMENSIONS]"