HackerTrans
TopNewTrendsCommentsPastAskShowJobs

ArcVRArthur

no profile record

Submissions

Lessons learned scaling LLM training and inference with RDMA (2024)

vgpu.io
1 points·by ArcVRArthur·il y a 2 ans·0 comments

[untitled]

1 points·by ArcVRArthur·il y a 2 ans·0 comments

[untitled]

1 points·by ArcVRArthur·il y a 2 ans·0 comments

Scaling Transformers at Cohere: What I Learned

vgpu.io
1 points·by ArcVRArthur·il y a 2 ans·1 comments

[untitled]

1 points·by ArcVRArthur·il y a 2 ans·0 comments

[untitled]

1 points·by ArcVRArthur·il y a 2 ans·0 comments

GVM Server: A complete virtualization solution based on GPU Virtual Machine(GVM)

youtube.com
1 points·by ArcVRArthur·il y a 4 ans·1 comments

GPU Virtual Machine (GVM) at QubesOS Summit

youtube.com
18 points·by ArcVRArthur·il y a 4 ans·2 comments

LibVF.IO: Add support for GPU Virtual Machine (GVM)

arccompute.com
118 points·by ArcVRArthur·il y a 4 ans·53 comments

GVM: A GPU Virtual Machine for IOMMU-Capable Computers

docs.linux-gvm.org
102 points·by ArcVRArthur·il y a 4 ans·53 comments

OpenMdev: Open VGPU and SR-IOV Documentation

openmdev.io
2 points·by ArcVRArthur·il y a 4 ans·1 comments

Video Tutorial: vGPU and SR-IOV on Consumer GPUs

youtube.com
1 points·by ArcVRArthur·il y a 5 ans·0 comments

Show HN: vGPU and SR-IOV on consumer GPUs

arccompute.com
203 points·by ArcVRArthur·il y a 5 ans·78 comments

Libvf.io: Commodity GPU Multiplexing Driven by VFIO and YAML

arccompute.com
3 points·by ArcVRArthur·il y a 5 ans·0 comments

Libvf.io: Commodity GPU Multiplexing Driven by VFIO and YAML

telegra.ph
1 points·by ArcVRArthur·il y a 5 ans·0 comments

Libvf.io: Multiplexing on Commodity GPUs Driven by YAML and VFIO

telegra.ph
1 points·by ArcVRArthur·il y a 5 ans·0 comments

LibVF.IO: Commodity GPU Multiplexing Driven by VFIO and YAML

telegra.ph
1 points·by ArcVRArthur·il y a 5 ans·0 comments

comments

ArcVRArthur
·il y a 2 ans·discuss
Hey YC, I helped Cohere scale GPUs to a 10k+ total GPU count for hybrid training and inference - if you’re curious about anything I wrote in the article I think there’s a good opportunity to read / reply to your comment. This article is made for fun.
ArcVRArthur
·il y a 2 ans·discuss
Hey YC, I helped Cohere scale GPUs to a 10k+ total GPU count for hybrid training/inference computer - if you’re curious about anything I wrote in the article I think there’s a good opportunity to read / reply to your comment here. Please leave a comment!
ArcVRArthur
·il y a 2 ans·discuss
I had the opportunity to help Cohere work on scaling transformers in the last year. If you have any questions about the article leave them below and I’ll do my best to answer openly. :)
ArcVRArthur
·il y a 2 ans·discuss
I had the opportunity to help Cohere work on scaling transformers in the last year. If you have any questions about the article leave them below and I’ll do my best to answer openly. :)
ArcVRArthur
·il y a 2 ans·discuss
I had the opportunity to help Cohere work on scaling transformers in the last year. If you have any questions about the article leave them below and I’ll do my best to answer openly. :)
ArcVRArthur
·il y a 4 ans·discuss
Hey all,

I'm the the co-author of the GPU Virtual Machine (GVM project), and LibVF.IO. We just announced our enterprise product based on GVM called GVM Server. I'd love to hear what you all think of the work we've done and give suggestions on where we can improve in the future!
ArcVRArthur
·il y a 4 ans·discuss
I was thinking this over in the past couple days and I think the words 'that they are aware' is really key here.

Ideally if GPU virtualization were sufficiently widespread as is support today for Intel VT-d, and AMD-v (IOMMU APIs for hardware assisted CPU virtualization) then software could make use of these functions without the user being aware of it. We're in a situation similar to that of CPU virtualization without hardware assistance with the early Xenoservers project from Cambridge (what would later become the Xen hypervisor and XenSource company). At that time there was not widespread support for virtualization assistance on most CPUs, and as a result Xen used methods like ring de-privileging to place the entire guest in ring 3 (userspace and kernel) while the hypervisor ran in ring 0 in order to virtualize any ordinary CPU model - my understanding is these were known as PV-guests (paravirtual guests). Over time however CPU companies began to introduce widespread support for features like VT-d and AMD-v to all of their models of CPU which enabled VM-exits/context save-restore with the use of shadow registers rather than ring de-privileging while Intel added new 'virtualization enhancements' through feature suites like vPro (SGX2 for example) which were only available on certain models of CPU (for example Xeon devices). Xen would adopt VT-d and AMD-v as HVM-guests (Hardware assisted virtualization) as they became more common on ubiquitous hardware and at the same time commercial forks of Xen would take advantage of these vPro features (like SGX2) for enterprise and high security government use-cases:

https://wiki.xenproject.org/wiki/Xen_Project_Software_Overvi...

Like before (around the time of the Xenoservers project) today we can effectively virtualize the GPU without hardware assistance mechanisms:

https://openmdev.io/index.php/GPU_Support

https://openmdev.io/index.php/Virtual_I/O_Internals#Mdev_Mod...

Since it's now practical to virtualize any GPU device (as was the case in the past with early Xen on CPUs supporting virtualization for various use-cases regardless of whether or not the hardware provided assistance mechanisms) it might then be time to start moving to a new paradigm of 'enterprise' vs. 'consumer' - in other words new 'virtualization enhancements' (similar to vPro on Intel's Xeons, ect..) are developed for enterprise GPUs (for example shadow page deduplication in VRAM, import/export of redundant objects between IO Virtual Address buffers, IOMMU protected balloon/deballoon, ect..) and basic hardware assistance mechanisms like SR-IOV & SIOV are enabled by default, across the board:

https://openmdev.io/index.php/Virtual_I/O_Internals#SR-IOV_M...

https://openmdev.io/index.php/Virtual_I/O_Internals#SIOV_Mod...
ArcVRArthur
·il y a 4 ans·discuss
Thanks!! We do our best to keep the code as clean/readable as possible. The first version was a bit of a mess but we rewrote it again clean slate to improve over the first implementation. :)
ArcVRArthur
·il y a 4 ans·discuss
That depends on your use-case. In general I would recommend you consider purchasing Nvidia's GPUs for the best price/performance and GVM support. Intel's Xe architecture is currently improving but the performance isn't quite there for a number of use-cases however some appear to work quite well and I expect that will improve with time. The 2080Ti works well with current software. If you are a developer and would like to help us improve support for devices you can purchase a 3090Ti (support in GVM for this device is under active development).
ArcVRArthur
·il y a 4 ans·discuss
We have Ampere support working on some devices (and it is in development on other Ampere devices) as well as 11th & 12th generation Intel Xe. :)

Here's the GPU Support page if you'd like to take a look:

https://openmdev.io/index.php/GPU_Support
ArcVRArthur
·il y a 4 ans·discuss
Ya, that's accurate. The precise driver implementation matters a lot. Having said that there are some good 'best practices' that seem to make a difference. In my opinion 'IOMMU Aware Mediated Device' could also make some much needed improvements here as it would allow for more granular IOMMU allocations - perhaps this mode could help further support the 'App VMs' use-case using shared work queues without breaking IO virtual address translation:

https://lwn.net/ml/linux-kernel/20190222021927.13132-1-baolu...
ArcVRArthur
·il y a 4 ans·discuss
GVM uses IOMMU for compartmentalization:

This page has a comparison of the various IO assistance modes GVM can make use of (see comparison of assistance modes, the Mdev Mode section, and the SR-IOV Mode section):

https://openmdev.io/index.php/Virtual_IO_Internals

This will probably also play a role in future developments like SIOV (Scalable IO Virtualization):

https://lwn.net/ml/linux-kernel/20190222021927.13132-1-baolu...
ArcVRArthur
·il y a 4 ans·discuss
Ya! You can use VMs that use X11 in the guest without issue. X11 also works on the host. Wayland is also working on the host - I haven't tested yet with Wayland guests yet so that's something to try.
ArcVRArthur
·il y a 4 ans·discuss
Ya, LibVF.IO & GVM are built for things like this! For example I have a friend who uses it for various Adobe programs which also don't work well on Linux.
ArcVRArthur
·il y a 4 ans·discuss
For sure! They can reach me at [email protected]

I'll also be attending KVM Forum this year so I'd love to chat with folks there as well! :)
ArcVRArthur
·il y a 4 ans·discuss
Thanks!! We'll do our best to keep improving things for everyone. Hopefully security by compartmentalization folks benefit from our work as well. I'll be going to QubesOS Summit so hopefully there will be more good conversations there. :)
ArcVRArthur
·il y a 4 ans·discuss
If they would consider helping with the things I mention here we'd do our best to support them!

https://news.ycombinator.com/item?id=32585950
ArcVRArthur
·il y a 4 ans·discuss
Unfortunately there is limited support on AMD. I would like to try to make it better though!

https://openmdev.io/index.php/GPU_Support
ArcVRArthur
·il y a 4 ans·discuss
I hope I can work with them some time to improve support! I outlined a few things they would need to do to help support GVM using the amdgpu driver on this page:

https://openmdev.io/index.php/AMDGPU

Ideally some folks who know about amdgpu might consider helping our open source community by adding similar information to that page to the information we added on the Nvidia Open Kernel Modules page:

https://openmdev.io/index.php/OpenRM

If that could be done then we would do our best to add in AMD support to GVM.
ArcVRArthur
·il y a 4 ans·discuss
There are also some benefits in load balancing GPUs. For instance processes can be controlled with controlled groups (cgroups) and niceness/thread affinity to make sure scheduling / resource allocation is done equitably between processes on the system. Using GVM and 'app VMs' it is possible to do similar things with the GPU (restrict GPU processes to a user configurable slice of the GPU so it cannot deny service to other processes on the system which are also using the GPU):

https://openmdev.io/index.php/Mdev-GPU#fbLen

Since this type of load balancing was originally used in the datacenter where virtual machine multi-tenancy was the use case the Quality of Service (QoS) functions here are fairly robust.