4. Create Pod and use IPU
You can access the IPU through the Kubernetes resource types, such as Deployment or Pod.
Create a configuration file: test.yaml
:
Kubernetes Pod example
apiVersion: v1 kind: Pod metadata: name: ipu-test-1 spec: containers: - name: demo-ipu-test image: graphcore/pytorch:latest command: ["/bin/bash", "-c", "--"] args: ["sleep infinity & wait"] resources: limits: c600.graphcore.ai/ipu: "1" # Number of IPUs allocated to the Pod
pod-test.yaml
(rename totest.yaml
)Deployment example
apiVersion: apps/v1 kind: Deployment metadata: name: ipu-test namespace: default labels: app: app-test spec: replicas: 1 selector: matchLabels: app: app-test template: metadata: labels: app: app-test spec: containers: - name: demo-ipu-test image: graphcore/pytorch:latest command: ["/bin/bash", "-c", "--"] args: ["sleep infinity & wait"] resources: limits: c600.graphcore.ai/ipu: "1"
deployment-test.yaml
(rename totest.yaml
)
The replica scaling and rollback functions of deployment are supported. Run the following command to create a Deployment or Pod:
$ kubectl apply -f test.yaml
The following command checks whether the Pod runs successfully. The expected output is shown:
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
ipu-test-1 1/1 Running 0 4d
Run the following command again:
$ kubectl describe nodes
You will find that the number of allocated IPUs has changed from 0 to 1.
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 1 (2%) 0 (0%)
memory 140Mi (0%) 340Mi (0%)
ephemeral-storage 0 (0%) 0 (0%)
hugepages-1Gi 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
c600.graphcore.ai/ipu 1 1
...
This indicates that the Kubernetes cluster can schedule and use IPU devices with the Kubernetes IPU device plugin.