Кажется, есть способ заставить это работать, по крайней мере, хакерским способом, как описано здесь .
Кажущийся файл конфигурации Service
, кажется, принимает и уважать аргумент limits: nvidia.com/gpu: 1
. Хотя интерфейс Cloud Run не позволяет нам указывать этот аргумент самостоятельно, мы можем использовать CLI kubectl
для ручного развертывания связанных служб, определенных в файле yaml, который содержит этот аргумент.
Сначала нам нужно создать кластер GKE с включенным пулом узлов процессора, пулом узлов GPU и включенной функцией Cloud Run for Anthos. Это можно сделать, перейдя на Kubernetes Engine -> Create Cluster -> Selecting "GPU Accelerated Computing" on the left cluster templates bar -> Checking the "Enable Cloud Run for Anthos"
. Как только кластер создан, мы можем нажать кнопку «подключиться» и запустить облачную оболочку. Здесь мы можем создать файл service.yaml
, который определяет наш родной сервис. Например, мы можем адаптировать файл service.yaml
из документации , но указать, что для этой службы требуется графический процессор:
# service.yaml
apiVersion: serving.knative.dev/v1 # Current version of Knative
kind: Service
metadata:
name: helloworld-go # The name of the app
namespace: default # The namespace the app will use
spec:
template:
spec:
containers:
- image: gcr.io/knative-samples/helloworld-go # The URL to the image of the app
env:
- name: TARGET # The environment variable printed out by the sample app
value: "Go Sample v1"
resources:
limits:
nvidia.com/gpu: 1 # The service must be run on a machine with at least one GPU
Мы можем развернуть эту службу, используя:
kubectl apply -f service.yaml
и проверьте его состояние с помощью:
kubectl get ksvc helloworld-go
Служба helloworld-go
должна планироваться только на узлах, содержащих графический процессор. Служба должна отображаться на панели управления Cloud Run, как и другие службы Cloud Run для Anthos.