Mac Mini M2 för homelab och AI hobbyprojekt

Permalänk
Medlem

Mac Mini M2 för homelab och AI hobbyprojekt

Hejsan,

Jag är ute efter en liten homelab server som jag också kan använda till en del AI experiment. Det handlar främst inte om att träna modeller utan om att testa bygga applikationer kring existerande modeller från www.huggingface.co. Tanken är att köra dem lokalt på Apple Neural Engine mha CoreML.

Jag kan inte jättemycket om AI utan jobbar som utvecklare och lösningsarkitekt inom andra fält. Jag vill dock testa olika modeller, lära mig hur de fungerar och vad de kan användas till. Till stor del eftersom det är viktigt i min yrkesroll men också för att jag tycker det är ett spännande område.

Utöver detta vill jag ha en homelab server för lite olika verktyg som t.ex en https://appflowy.io/ server eller dyl. För detta tänkte jag inte använda MacOS direkt utan installera Linux på en virtuell maskin, vad jag förstått finns det lite olika alternativ för att virtualisera ARM Linux på Apple silicon med en mindre prestandaförlust. Apples virtualization framework verkar vara ett intressant alternativ men jag vet väldigt lite om det.

Är det någon som testat en Apple silicon Mac för något av dessa användningsområdena? Är det en rimlig investering för detta?

En bonus med en Mac Mini är att jag också kan testa olika mjukvarustackar på ARM arkitektur för att förstå hur det jag jobbar med skulle kunna dra nytta av ARM. Jag jobbar med .NET och vet inte alls hur det lirar på Apple silicon och ARM idag.

Permalänk
Datavetare

Har använt MacOS samt MacMini M1 och MBP M1Pro till bl.a. att köra Linux och greja med ML.

Så länge du inte tänkte fippla med in-kernel saker i Linux-kärnan skulle jag använda Docker för att köra Linux. Det går att köra både Linux/ARM64 och Linux/x86_64 program den vägen, men har egentligen bara testat att det senare fungerar så kan inte säga hur bra/dålig prestandan är.

Kör man Linux/ARM64 under Docker är prestanda väldigt bra, är egentligen inget som emuleras utan det körs ju direkt fast med den overhead man kan förvänta sig av en modern VM. Man kör ju en Linux-kärnan i en VM precis som man gör med Docker på Windows, är bara på native Linux som det är i stort sett noll overhead med Docker.

Har egentligen bara använt ML via PyTorch. Dels genom att direkt programmera PyTorch själv, och dels via stable-diffusion front-ends som under huven kokar ned till att använda PyTorch.

PyTorch har sedan ett par versioner tillbaka "native" stöd för GPU och NPU på Apple Silicon. Av de benchmark jag sett är GPUn i M2-serien rätt mycket snabbare än den i M1-serien, skillnaden är klart större för GPGPU jämfört med 3D-grafik.

Ett exempel är Blender benchmark där 16 GPU-kärnors M1 Pro får ~510 poäng medan 16 GPU-kärnors M2 Pro får ~840 poäng (då är 16 GPU-kärnor max antal för M1 Pro medan det är "budget-versionen" för M2, finns en med 19 kärnor också).

I en MacMini har du valet att köra endera M2 eller M2Pro, för ditt use-case kan den senare nog vara värt det givet att GPUn där kan vara mer än dubbel så snabb (lite beroende på användarfall).

Håller inte på jättemycket med .NET, men har ändå kör den del på MacOS både i Unity (som numera fungerar utmärkt på Apple Silicon) men också med "vanliga" .NET-core.

Fram till förra hösten skulle säga att stödet för ARM64 var bedrövligt i .NET. De saker jag testade fungerade i.o.f.s., men prestanda var uselt jämfört relativt vad man såg med Java, Go, C++ etc ställd mot x86. Microsoft var uppenbarligen själva väldigt medveten om detta, för de pekade just på att de jobbat rejält med att optimera ARM64 prestanda till lanseringen av .NET 7 (antagligen inte helt orelaterat till att de numera har ARM64 instanser på Azure...).

Skulle forfarande säga att man inte riktigt är på samma nivå som de andra jag nämnde, men det är inte jättelångt borta och funktionellt finns inget att klaga på.

Har mest kör VS Code + Microsoft .NET plugin, även den har blivit betydligt bättre med tiden. Annars finns även JetBrains Rider som definitivt är att föredra om man vill pillra med Unity!

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Yoshman:

Har använt MacOS samt MacMini M1 och MBP M1Pro till bl.a. att köra Linux och greja med ML.

Så länge du inte tänkte fippla med in-kernel saker i Linux-kärnan skulle jag använda Docker för att köra Linux. Det går att köra både Linux/ARM64 och Linux/x86_64 program den vägen, men har egentligen bara testat att det senare fungerar så kan inte säga hur bra/dålig prestandan är.

Kör man Linux/ARM64 under Docker är prestanda väldigt bra, är egentligen inget som emuleras utan det körs ju direkt fast med den overhead man kan förvänta sig av en modern VM. Man kör ju en Linux-kärnan i en VM precis som man gör med Docker på Windows, är bara på native Linux som det är i stort sett noll overhead med Docker.

Bra idé, Docker direkt i MacOs blir ett mycket smidigare sätt att hosta homelab tjänster. Tror det täcker nästan allt jag skulle vilja köra Linux på den för. Behöver jag labba med något annat kan jag alltid sätta upp en virtuell maskin för just det, men det skulle nog vara undantaget. Vet du vad Docker använder för virtualiseringsmotor i bakgrunden på MacOS?

Jag läste att man numera kan köra Rosetta 2 i Linux för att exekvera X86 binärer om man virtualiserar genom Apple's virtualization framework:

https://developer.apple.com/documentation/virtualization/runn...

Det är ju ändå rätt häftigt

Skrivet av Yoshman:

Har egentligen bara använt ML via PyTorch. Dels genom att direkt programmera PyTorch själv, och dels via stable-diffusion front-ends som under huven kokar ned till att använda PyTorch.

PyTorch har sedan ett par versioner tillbaka "native" stöd för GPU och NPU på Apple Silicon. Av de benchmark jag sett är GPUn i M2-serien rätt mycket snabbare än den i M1-serien, skillnaden är klart större för GPGPU jämfört med 3D-grafik.

Ett exempel är Blender benchmark där 16 GPU-kärnors M1 Pro får ~510 poäng medan 16 GPU-kärnors M2 Pro får ~840 poäng (då är 16 GPU-kärnor max antal för M1 Pro medan det är "budget-versionen" för M2, finns en med 19 kärnor också).

I en MacMini har du valet att köra endera M2 eller M2Pro, för ditt use-case kan den senare nog vara värt det givet att GPUn där kan vara mer än dubbel så snabb (lite beroende på användarfall).

Spännande, då verkar det ju gå i alla fall, sen hade jag kanske tänkt att satsa på en lite enklare variant för att spara ner lite på kostnaden så jag får se hur jag gör där. Idén har varit att köra en non pro variant med 24gb minne.

Jag har också en Linux maskin med Ubuntu 23.10 Beta just nu, i den sitter ett 7900XT men jag har inte haft större framgång att använda den för AI. Jag har iofs inte lagt jättemycket tid på det heller så det kanske vorre på sin plats att göra ett nytt försök. Det är dock lite av en djungel att reda ut vilket mjukvarupaket som skall användas till vad i Linux med AMD och vad det har för effekt på andra användningsområden. Men det borde klart gå att reda ut och lösa. Får jag igång det på AMD kortet räcker troligen den billigare M2 varianten för mina andra användningsområden.

Skrivet av Yoshman:

Håller inte på jättemycket med .NET, men har ändå kör den del på MacOS både i Unity (som numera fungerar utmärkt på Apple Silicon) men också med "vanliga" .NET-core.

Fram till förra hösten skulle säga att stödet för ARM64 var bedrövligt i .NET. De saker jag testade fungerade i.o.f.s., men prestanda var uselt jämfört relativt vad man såg med Java, Go, C++ etc ställd mot x86. Microsoft var uppenbarligen själva väldigt medveten om detta, för de pekade just på att de jobbat rejält med att optimera ARM64 prestanda till lanseringen av .NET 7 (antagligen inte helt orelaterat till att de numera har ARM64 instanser på Azure...).

Skulle forfarande säga att man inte riktigt är på samma nivå som de andra jag nämnde, men det är inte jättelångt borta och funktionellt finns inget att klaga på.

Har mest kör VS Code + Microsoft .NET plugin, även den har blivit betydligt bättre med tiden. Annars finns även JetBrains Rider som definitivt är att föredra om man vill pillra med Unity!

Det stämmer överrens med vad jag hört, läste också att .NET 8 skall komma med ytterligare prestandaförbttringar när det släpps i November. Det behöver inte vara snabbast för mitt labbande heller, och till fritids gillar jag att testa andra språk och ramverk. Där Go, Rust och Elixir väl är de språk som främst väcker mitt intresse. I mindre projekt brukar jag nöja mig med VIM, eller NeoVIM för att vara specifik. Och det är i stort sett alltid mindre projekt jag labbar med hemma.

Permalänk
Medlem

Nvidia/CUDA är kung på AI såvitt jag förstår. Överväg att sälja ditt 7900XT, köpa något Nvidia-grafikkort med mycket minne, och eventuellt köpa mer minne till Linux-datorn.

Apple tar så fruktansvärt mycket betalt för uppgraderingar. Den billigaste Mac Mini M2 kostar 8500:-, men vill du ha 32 GB minne går det på 23500:- eftersom du "tvingas" göra andra uppgraderingar samtidigt (CPU/GPU, SSD). För att få 64 GB behöver du köpa en Mac Studio för 34000:- osv.

Ska du bara ha Mac:en för att utveckla på och liknande räcker 16 GB minne fint, men för AI verkar man vilja ha mer. Gärna 64 GB eller kanske tom 128 GB, vilket kostar från 3000 kronor på PC och typ 68 000 kronor på Mac (fast då får du ju en väldigt fin dator "på köpet").

Jag älskar ju Mac (eller ska vi säga hatar dem minst ), men för mer "server-liknande" saker är de inte ideala, inte minst pga priset på uppgraderingar.