For this task, virtual machine based on qemu was created.
- Arch: amd64
- 8 cores (2x4), Intel Xeon Silver 4214 @ 2.20 GHz
- 32 GB DDR4 memory, ECC, without balooning due to PCIe passthrough
- Nvidia RTX 2080ti (Gigabyte 11GB GDDR6), PCIe passthrough
- NIC bridged (actively) to bond of 2x 1Gbps links
- Kernel: linux 6.1.0-23
- Distro: Debian bookworm 12.2.0-14
It was assumed that this type of environment is only for dev/test purposes and some security aspects are of secondary matter. In a production and fully virtualized environment I would use cloud-init for configuration. Also, using cloud images in PVE require more bootstraping at the beginning which are irrelevant for this task due to differences in qemu storage format.
For access machine, following steps were performed.
- Installed kubectl for interacting with k3s cluster.
- Installed ansible for cluster bootstraping. Starting repo: k3s-ansible.
For k3s node:
- Manually installed debian bookwork.
- Basic OS setup: potential upgrades of the OS and additional software: sudo, python3, python3-apt, gcc, vim, git, curl, wget, gnupg, nfs-common. I also installed zsh and set it as default shell because of my personal preference.
- Installed nvidia open driver and nvidia-container-toolkit for GPU usage in k3s. Also, installed cuda-drivers-fabricmanager and nvidia-container-runtime, according to k3s docs.
- Set up passwordless login using PKI (ed25519).
SSH config:
ssh-keygen -t ed25519 -f $HOME/.ssh/cherry-k3s ssh-copy-id -i .ssh/cherry-k3s cherry.lanHost cherry.lan Hostname cherry.lan User phajder IdentityFile ~/.ssh/cherry-k3s - Converted this image to PVE template, in case of further extensions or any critical errors during any setup inside VM.
- Created full clone from template and setup the VM with local DNS server. Assigned domains: cherry.local.retrolab.phd (FQDN), cherry.lan (local access).
| No. | Description |
|---|---|
| 1 | LLM deployment |
| 2 | LLM pipeline with Argo Workflows |
| 3 | Project decisions |
- For server-grade GPUs, MIG can be used.
- Problem with nvidia-container-toolkit on k3s - NVIDIA/k8s-device-plugin#406 (comment).
- Text generation web ui helm - https://github.com/handyman5/text-generation-webui-helm.