this post was submitted on 20 Feb 2024
143 points (94.4% liked)

Selfhosted

40329 readers
401 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 1 year ago
MODERATORS
 

It looks like !buildapc community isn't super active so I apologize for posting here. Mods, let me know if I should post there instead.

I built my first PC when I was I think 10-11 years old. Built my next PC after that and then sort of moved toward pre-made HP/Dell/etc. My last PC's mobo just gave out and I'm looking to replace the whole thing. I've read over the last few years that prefabs from HP/Dell/etc. have gone to shit and don't really work like they used to. Since I'm looking to expand comfortably, I've been thinking of giving building my own again.

I remember when I was a young lad, that there were two big pain points when putting the rig together: motherboard alignment with the case (I shorted two mobos by having it touch the bare metal of the grounded case; not sure how that happened but it did) and CPU pin alignment so you don't bend any pins when inserting into the socket.

Since it's been several decades since my last build, what are some things I should be aware of? Things I should avoid?

For example, I only recently learned what M.2 SSD are. My desktop has (had) SATA 3.5" drives, only one of which is an SSD.

I'll admit I am a bit overwhelmed by some of my choices. I've spent some time on pcpartpicker and feel very overwhelmed by some of the options. Most of my time is spent in code development (primarily containers and node). I am planning on installing Linux (Ubuntu, most likely) and I am hoping to tinker with some AI models, something I haven't been able to do with my now broken desktop due to it's age. For ML/AI, I know I'll need some sort of GPU, knowing only that NVIDIA cards require closed-source drivers. While I fully support FOSS, I'm not a OSS purist and fully accept that using a closed source drivers for linux may not be avoidable. Happy to take recommendations on GPUs!

Since I also host a myriad of self hosted apps on my desktop, I know I'll need to beef up my RAM (I usually go the max or at least plan for the max).

My main requirements:

  • Intel i7 processor (I've tried i5s and they can't keep up with what I code; I know i9s are the latest hotness but don't think the price is worth it; I've also tried AMD processors before and had terrible luck. I'm willing to try them again but I'd need a GOOD recommendation)
  • At least 3 SATA ports so that I can carry my drives over
  • At least one M.2 port (I cannibalized a laptop I recycled recently and grabbed the 1TB M.2 card)
  • On-board Ethernet/NIC (on-board wifi/bluetooth not required, but won't complain if they have them)
  • Support at least 32 GB of RAM
  • GPU that can support some sort of ML/AI with DisplayPort (preferred)

Nice to haves:

  • MoBo with front USB 3 ports but will accept USB 2 (C vs A doesn't matter)
  • On-board sound (I typically use headphones or bluetooth headset so I don't need anything fancy. I mostly listen to music when I code and occasionally do video calls.)

I threw together this list: https://pcpartpicker.com/list/n6wVRK

It didn't matter to me if it was in stock; just wanted a place to start. Advice is very much appreciated!

EDIT: WOW!! I am shocked and humbled by the great advice I've gotten here. And you've given me a boost in confidence in doing this myself. Thank you all and I'll keep replying as I can.

you are viewing a single comment's thread
view the rest of the comments
[–] CeeBee@lemmy.world 2 points 9 months ago* (last edited 9 months ago) (1 children)

getting a few CUDA TPUs

https://coral.ai/products/#prototyping-products

Those aren't "CUDA" anything. CUDA is a parallel processing framework by Nvidia and for Nvidia's cards.

Also, those devices are only good for inferencing smaller models for things like object detection. They aren't good for developing AI models (in the sense of training). And they can't run LLMs. Maybe you can run a smaller model under 4B, but those aren't exactly great for accuracy.

At best you could hope for is to run a very small instruct model trained on very specific data (like robotic actions) that doesn't need accuracy in the sense of "knowledge accuracy".

And completely forgot any kind of generative image stuff.

[–] jjlinux@lemmy.ml 1 points 9 months ago* (last edited 9 months ago) (1 children)

Same reply. And you can add as many TPUs as you want to push it to whatever level you want. At 59 bucks a piece, they'll blow any 4070 out of the water for the same or less cost. But to the OP, you don't have to believe any of us. You're in that field, I'm sure you can find the jnfo on if these would fit your needs or not.

[–] CeeBee@lemmy.world 1 points 9 months ago* (last edited 9 months ago) (1 children)

And you can add as many TPUs as you want to push it to whatever level you want

No you can't. You're going to be limited by the number of PCI lanes. But putting that aside, those Coral TPUs don't have any memory. Which means for each operation you need to shuffle the relevant data over the bus to the device for processing, and then back and forth again. You're going to be doing this thousands of times per second (likely much more) and I can tell you from personal experience that running AI like is painfully slow (if you can get it to even work that way in the first place).

You're talking about the equivalent of buying hundreds of dollars of groceries, and then getting everything home 10km away by walking with whatever you can put in your pockets, and then doing multiple trips.

What you're suggesting can't work.

[–] jjlinux@lemmy.ml 0 points 9 months ago (1 children)

Let's get this out of the way. Not a single consumer grade board has more than 16 lanes on 1 PCI slot. With the exception of 2 or 3 very expensive new boards out there, you'll be hard pressed to find a board with 3 slots giving you a total mas of 28 lanes (16+8+4). So, regardless of TPU or GPU that's going to be your limit. GPUs are designed as general purpose processors that have to support millions of different applications and software. So while a GPU can run multiple functions at once, in order to do so, it must access registers or shared memory to read and store the intermediate calculation results. And since the GPU performs tons of parallel calculations on its thousands of ALUs, it also expends large amounts of energy in order to access memory, which in turn increases the footprint of the GPU. TPUs are application-specific integrated circuits (ASIC) designed specifically to handle the computational demands of machine learning and accelerate AI calculations and algorithms. They are created as a domain-specific architecture. What that means is that instead of designing a general purpose processor like a GPU or CPU, they were designed as a matrix processor that was specialized for neural network work loads. Since the TPU is a matrix processor instead of a general purpose processor, it removes the memory access problem that slows down GPUs and CPUs and requires them to use more processing power. Get your facts straight and read more before you try to send others on wild goose chases. As I said, the OP already works this field, it shouldn't be hard for him to find the information and make an educated decision.

[–] CeeBee@lemmy.world 2 points 9 months ago* (last edited 9 months ago) (1 children)

A lot of what you said is true.

Since the TPU is a matrix processor instead of a general purpose processor, it removes the memory access problem that slows down GPUs and CPUs and requires them to use more processing power.

Just no. Flat out no. Just so much wrong. How does the TPU process data? How does the data get there? It needs to be shuttled back and forth over the bus. Doing this for a 1080p image with of data several times a second is fine. An uncompressed 1080p image is about 8MB. Entirely manageable.

Edit: it's not even 1080p, because the image would get resized to the input size. So again, 300x300x3 for the past model I could find.

/Edit

Look at this repo. You need to convert the models using the TFLite framework (Tensorflow Lite) which is designed for resource constrained edge devices. The max resolution for input size is 224x224x3. I would imagine it can't handle anything larger.

https://github.com/jveitchmichaelis/edgetpu-yolo/tree/main/data

Now look at the official model zoo on the Google Coral website.

https://coral.ai/models/

Not a single model is larger than 40MB. Whereas LLMs start at well over a big for even smaller (and inaccurate) models. The good ones start at about 4GB and I frequently run models at about 20GB. The size in parameters really makes a huge difference.

You likely/technically could run an LLM on a Coral, but you're going to wait on the order of double-digit minutes for a basic response, of not way longer.

It's just not going to happen.

[–] jjlinux@lemmy.ml 0 points 9 months ago (1 children)

OK mman, dont pop a vein over this. I'm a hobbyist, with some experience, but a hobbyist nonetheless. I'm speaking from personal experience, nothing else. You may well be right (and thanks for the links, they're really good for me to learn even more).

I guess, at the end of the day, the OP will need to make an informed decision on what will work for him while adhering to his budget.

I'm glad to be here, because I can help people (at least some times) and learn at the same time.

I just hope the OP ends up with something that'll fit his needs and budget. I will he adding a K80 to my rig soon, only because I can let go of 50 bucks and want to test it until it burns.

I wish you all a very nice weekend, and keep tweaking, its too Much fun.

[–] CeeBee@lemmy.world 2 points 9 months ago (1 children)

OK mman, dont pop a vein over this

That's incredibly rude. At no point was I angry or enraged. What you're trying to do is minimize my criticism of your last comment by intentionally making it seem like I was unreasonably angry.

I was going to continue with you in a friendly manner, but screw you. You're an ass (and also entirely wrong).