| OS Version | Status Badge |
|---|---|
| Ubuntu 22.04 | |
| Ubuntu 24.04 | |
| AlmaLinux 8.10 | |
| AlmaLinux 9.7 | |
| Rocky Linux 8.10 | Build pipeline pending |
| Rocky Linux 9.7 | Build pipeline pending |
| Azure Linux 3.0 |
This repository houses a collection of scripts meticulously crafted for installing High-Performance Computing (HPC) and Artificial Intelligence (AI) libraries, along with tools essential for building Azure HPC/AI images. Whether you're provisioning compute-intensive workloads or crafting advanced AI models in the cloud, these scripts streamline the process, ensuring efficiency and reliability in your deployments.
Following are the current supported HPC/AI VM images that are available in Azure Marketplace:
- Ubuntu-HPC 22.04 (microsoft-dsvm:ubuntu-hpc:2204:latest)
- Ubuntu-HPC 22.04 V100 (microsoft-dsvm:ubuntu-hpc:2204-v100:latest)
- Ubuntu-HPC 22.04 ROCm (microsoft-dsvm:ubuntu-hpc:2204-rocm:latest)
- Ubuntu-HPC 24.04 (microsoft-dsvm:ubuntu-hpc:2404:latest)
- Ubuntu-HPC 24.04 ROCm (microsoft-dsvm:ubuntu-hpc:2404-rocm:latest)
- AlmaLinux-HPC 8.10 (almalinux:almalinux-hpc:8_10-hpc-gen2:latest)
- AlmaLinux-HPC 8.10 V100 (almalinux:almalinux-hpc:8_10-hpc-v100-gen2:latest)
- AlmaLinux-HPC 9.7 (almalinux:almalinux-hpc:9-hpc-gen2:latest)
- Rocky Linux 8.10 HPC (scripts available, marketplace publication pending)
- Rocky Linux 9.7 HPC (scripts available, marketplace publication pending)
- AzureLinux-HPC 3 (azure-hpc:azurelinux-hpc:3:latest)
- AzureLinux-HPC 3-FIPS (azure-hpc:azurelinux-hpc:3-fips:latest)
- AzureLinux-HPC 3-V100 (azure-hpc:azurelinux-hpc:3-v100:latest)
- AzureLinux-HPC 3-V100-FIPS (azure-hpc:azurelinux-hpc:3-v100-fips:latest)
This repo uses Azure CLI and Packer to build images. (Note: only WSL/Linux is supported at the moment)
By default, Packer will only run the image building scripts on the build VM, then deprovision and clean up the resources if everything succeeds. Your local public keys are automatically copied to the build VM to facilitate SSH-based troubleshooting if Packer fails. Default username is hpcuser. Set retain_vm_always to true if you'd like to skip deprovisioning/resource deletion (for e.g. manual inspection of VM).
For a quick dry-run-like test run, set skip_hpc to true.
See the Packer files for details of variables (e.g. variables specifying which SIG gallery to publish images to).
# Sign in Azure CLI
az login
# Initialize Packer with Azure plugin
cd packer
packer init .
packer build --var 'target_vm_size=Standard_ND96asr_v4' --var 'os_family=ubuntu' --var 'distro_version=24.04' --var 'azure_location=southcentralus' --on-error=run-cleanup-provisioner .Historically, OS kernel updates broke compatibility of HPC components we install (e.g., Lustre), so the kernel was excluded from updates. Lustre was the last component tightly coupled to a specific kernel version, and it has since been switched to DKMS. As a result, the kernel is no longer locked by default in our HPC images, and kernel updates are now allowed.
If you prefer to keep the kernel from updating (e.g., to avoid a kernel update potentially breaking your environment), you can lock it yourself on the running VM:
- AlmaLinux / Rocky Linux (dnf):
echo "exclude=kernel*" | tee -a /etc/dnf/dnf.conf # Disable dependencies on kernel core sed -i "$ s/$/ shim*/" /etc/dnf/dnf.conf sed -i "$ s/$/ grub2*/" /etc/dnf/dnf.conf
- Ubuntu (apt):
# Hold the Azure kernel meta-package (adjust the name to your installed kernel, e.g. linux-azure, linux-azure-6.8, linux-azure-lts-22.04, linux-azure-nvidia) sudo apt-mark hold linux-azure linux-image-azure - Azure Linux (tdnf/dnf):
# Disable kernel updates echo "exclude=kernel* kmod*" | tee -a /etc/dnf/dnf.conf # Since tdnf is the default package manager and # because /etc/tdnf/tdnf.conf does not recongnize # exclude option adding a kernel package lock file # https://github.com/vmware/tdnf/wiki/Configuration-Options#package-locks mkdir -p /etc/tdnf/locks.d echo kernel > /etc/tdnf/locks.d/kernel.conf # wild cards don't seem to work echo kernel-headers >> /etc/tdnf/locks.d/kernel.conf echo kmod >> /etc/tdnf/locks.d/kernel.conf
Our HPC image releasing primary cadence is quarterly. In between releases, if we get flagged for security issues, we quickly apply the patch and release a hotfix in an adhoc fashion which can be done within a week or two.
Please keep using our latest HPC images. If any compliance issues (e.g., security bugs) are identified, please also report them (and patches, if any) to us. We will apply the fix and release the patched images as a hotfix.
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.