How to Run Llama 3 405B on Home Devices? Build AI Cluster
b4rtaz.medium.com
b4rtaz.medium.com
It seems impractical that a home would have 4 machines with 64 gb ram that would be dedicated to a distributed system. Max, core count, 16 cores from Consumer AMD CPUs? From a cost perspective build a system with 256gb ram and AMD Epic CPU?
The only thing I can think of that pushes a need for a distributed system is multi-GPU across multiple systems.
I'd love to see a llama model that fits now economically inside 16GB. The 8b is a bit too small when quantised even to 8 bits. A 16-20b model would be perfect.
But I think for 400b models to be viable, the hardware pricing really needs to catch up.
Agreed, it's a lot of money and definitely more than I'd be willing to spend. However, compared to running such 400b models on a GPU cluster it's extremely cheap (and much slower)
I actually happen to have in my home a cluster of five eATX cases, which stay on two adjacent IKEA metallic tables and which are connected in a ring of direct 10 Gb/s Ethernet links (i.e. they all have dual-port NICs). Therefore it is not really impractical, even if such a configuration may be infrequent.
In the distant past, I was using dual-socket Xeon or Opteron motherboards in those cases, because such MBs and CPUs were much cheaper than today. Then, by the time of Zen 1, when the Epyc CPUs were still very cheap, the upgrades have been to single-socket Epyc MBs. More recently, Epyc became much more expensive and Ryzen CPUs have much better performance per dollar, so the latest upgrades have been to Ryzen MBs. I look forward to the launch of Ryzen 9 9950X, which should double the throughput of the vector operations, 5 years after Ryzen 9 3950X (Zen 2) has done the same in 2019.
As my PC, I use an Intel NUC. Whenever I need to execute something for which that would be too weak, I launch it on one or more of the servers, by using Wake-on-LAN and shutting them down after the task is completed. In this way, my average electrical power consumption is much less than if I used a beefy desktop, while the peak performance is much higher.
Yeah, but then the question arises: why? Assuming 4x $700 for a mini PC setup, you still only get like 360GB/s memory bandwidth. It is a lot of money with nothing to show for it, really. Your model will run at 2 tokens per second. A GPU setup within the same budget could run a 70B model at high speeds.
This is why I am kinda bullish on the XDNA NPU from AMD. It represents the low end. People who run small models below 16GB in size. Since the hardware will be available on almost every AMD laptop, it will be much easier to actually utilize in say a video game. As of today, it is kind of annoying when an LLM based game asks you for an API key. The out of the box experience isn't that good.
The bandwidth per core is the same for a 16-core Ryzen and for a 96-core Epyc.
Of course if you compare it with a GPU, the GPU wins in memory bandwidth. However the GPUs are useless for FP64 computations, unless you are a big corporation that can afford the huge prices of the "datacenter" GPUs.
For ML/AI, GPUs are the normal choice, except when you cannot afford those with enough memory, when you may still want to fall back to cheap CPUs, as argued in the parent article.
A $1500 Ryzen 9 9950X system will have a double price in comparison with a mini-PC, but it will be 3 to 4 times faster in any program whose performance is dominated by the speed of the array operations. This speed ratio is true for the fastest CPU that could be put now in a mini-PC, i.e. AMD Strix Point (a HX 370 does 192 FP32 FMA per clock cycle, while a 9950X does 512 FP32 FMA per clock cycle and its clock frequency is much higher; it should be noted that these values are similar to those for integrated GPUs; the best iGPUs have a double number of ALUs, but their clock frequency is much lower, slightly more than half of that of a CPU). In comparison with a low-power Intel CPU or older AMD CPU, the speed advantage of 9950X would be even greater.
I'm using an old x99 board for my desktop currently. If I swap out the i7 with a Xeon it can take up to 512GB of ram. That would be pricey, but I could do 256 and the Xeon for under $300 total. Still a lot for a toy, and I'm sure it would be super slow...
GPU inference is another thing, as high-VRAM GPUs are artificially priced way high so they could only be bought by corporations. However, if you attempt to build a cluster with say 10 4090s to obtain some 240GB VRAM, you won’t have enough electricity to run it at home.
I am currently building a 4x4090 rig, but that’s probably the maximum I could have at home giving my budget / available power restrictions. And that’s only 96G VRAM, slightly more than a single A100.
The average home (in the United States at least) has more than enough power to run 10 GPUs, or even more, with plenty left over for other appliances. Back of the napkin math is that ten high-end GPUs, at 350W each, need approximately 30-35A of power, and these days the bare minimum service in a home is 100A (and many homes have more than this; mine has 200A, for example). This could be accomplished on two standard 15A circuits, or perhaps more comfortably two 20A circuits.
You can also throttle your cards down to conserve power; I know that 3090s set to max power of 225W only lose ~5% of performance when running LLM workloads, while saving ~125W of power at full load.
I'm not familiar with the typical Swiss apartment, so I'm sorry if this is a stupid question, but do you not think that your apartment could sustain a ~15A load at 230V? That's how much you'd need for ten RTX 4090s at full power.
Yes, which was a suggestion in reply to my comment mentioning the use of two standard 120v circuits, which I still maintain is the easiest and cheapest path for most people.