Add blobfuse support for AKS#6654
Conversation
| A tuple of (storage_account_name, resource_group_name, account_key). | ||
| """ | ||
| # Only required when Azure blobfuse is requested. | ||
| from perfkitbenchmarker.providers import azure |
There was a problem hiding this comment.
Oof this looks quite ugly. We might finally be hitting some of the limit of the current wg_serving_inference_server.py if cloud implementation. It might be somewhat necessary currently (because idk what happens if you put this in root, whether that causes circular dependencies or errors with LoadProvider when running on eg GCP) but is not correct. We should instead have separate files in each provider with cloud specific code. I'll also forward this feedback to Xia internally.
There was a problem hiding this comment.
Refactored and moved functionality into a new file perfkitbenchmarker/providers/azure/azure_blob_csi_mount.py
hubatish
left a comment
There was a problem hiding this comment.
approving but as mentioned I think this may fail pytype checks
| apiVersion: v1 | ||
| kind: PersistentVolumeClaim | ||
| metadata: | ||
| name: gcs-fuse-csi-static-pvc |
There was a problem hiding this comment.
seems like odd gcs-fuse specific metadata?
There was a problem hiding this comment.
This was updated as follows: name: {{pvc_name}}
| spot=FLAGS.azure_low_priority_vms, | ||
| ) | ||
|
|
||
| def ApplyBlobFusePVC(self): |
There was a problem hiding this comment.
Yes this is basically what I was asking for. It is kubernetes_ai_inference specific atm but it is reasonable to think we'd use this in other benchmarks (none of the setup actually seems that AI specific).
Some additional changes to line up with this:
- Consider also moving the yaml to data/container/azure rather than data/container/kubernetes/ai_infernece.
- Add an empty version of this function to container_cluster.py (surprised the code as isn't failing pytype checks). Call it ApplyFusePVC rather than ApplyBlobFusePVC so it's more cloud agnostic.
There was a problem hiding this comment.
Done:
- Jinja template was moved to
data/container/azure - The function was renamed and moved to
container_cluster.py
d0118d7
into
GoogleCloudPlatform:master
Add Azure Blob Storage (blobfuse2) support to the Kubernetes AI inference benchmark
Enables the
kubernetes_ai_inferencebenchmark to load model weights from Azure Blob Storage via the Azure Blob CSI driver (blobfuse2), as an Azure equivalent of the GCS Fuse.AksAutomaticCluster._Create: unconditionally pass--enable-blob-driverat cluster creation, matching GKE Autopilot (where the GCS Fuse CSI driver is on by default)._ApplyBlobFusePVC: renders and applies blobfuse_pv_pvc.yaml.j2 with the Secret, PV, and PVC for the blob CSI driver.wg_serving_inference_server.py:--k8s_inference_server_blobstorage_bucket,--k8s_inference_server_blobstorage_account,--k8s_inference_server_blobstorage_resource_group._GetStorageType: return 'blobfuse' when catalog_components contains blobfuse._Create: branch to_ApplyBlobFusePVC()when blobfuse is in catalog_components._ResolveBlobStorageAccount: resolves credentialsCommand used to run:
It requires
gke-vllm-testcontainer storage to be created and thellama3-8bmodel to be uploaded to thevllm_models/llama3-8b-hfpath prior to the run.