armshell@sg-node
~ $ ssh dev@sg-node.armshell.com
dev@sg-node ~ % sw_vers
ProductName: macOS
ProductVersion: 15.5
BuildVersion: 24F74
dev@sg-node ~ % sysctl -n machdep.cpu.brand_string hw.memsize
Apple M4
17179869184
dev@sg-node ~ % pwd
/Users/dev
dev@sg-node ~/App % xcode-select -p
/Applications/Xcode.app/Contents/Developer
dev@sg-node ~/App % xcodebuild -scheme App -configuration Release -destination 'generic/platform=iOS' build
Resolve Package Graph
CompileSwiftSources normal arm64
Ld build/Release-iphoneos/App.app/App
CodeSign build/Release-iphoneos/App.app
** BUILD SUCCEEDED **
dev@sg-node ~/App % ls build/Release-iphoneos
App.app
dev@sg-node ~/App % bundle exec fastlane gym --scheme App
$ xcodebuild -showBuildSettings -scheme App
▸ Compiling AppDelegate.swift
▸ Linking App
** ARCHIVE SUCCEEDED **
Successfully stored the archive.
Successfully exported and signed the ipa file:
/Users/dev/App/build/App.ipa
fastlane finished successfully
dev@sg-node ~/App % ls build/*.ipa
dev@sg-node ~ % brew install gitlab-runner
Installing gitlab-runner
dev@sg-node ~ % gitlab-runner register
Runtime platform arch=arm64 os=darwin
Enter the executor: shell
Runner registered successfully.
dev@sg-node ~ % brew services start gitlab-runner
Successfully started gitlab-runner
dev@sg-node ~ % gitlab-runner verify
Verifying runner... is valid
~ $ ssh -N -L 5901:localhost:5900 dev@sg-node.armshell.com
Öffnen Sie die Desktop-Verbindung in einem zweiten lokalen Terminal:
~ $ open vnc://localhost:5901
Aktivieren Sie die Bildschirmfreigabe auf dem Mac und nutzen Sie dann den SSH-Tunnel.
dev@sg-node ~ % sudo lsof -iTCP:5900 -sTCP:LISTEN
COMMAND PID USER TYPE NAME
screensharingd 402 root IPv4 TCP *:rfb (LISTEN)
Machen Sie den Desktop-Port nicht direkt aus dem Internet erreichbar.
Den Desktop nutzen Sie zur Kontrolle der Oberfläche; Massenaufgaben lassen sich weiterhin über die Kommandozeile ausführen.
dev@sg-node ~ % python3 -m venv .venv
dev@sg-node ~ % source .venv/bin/activate
(.venv) % pip install -U mlx
Successfully installed mlx
(.venv) % python -c "import mlx.core as mx; print(mx.default_device()); print(mx.arange(4))"
Device(gpu, 0)
array([0, 1, 2, 3], dtype=int32)
Prüfen Sie zuerst die Umgebung und planen Sie den Speicherbedarf anhand von Modellgewichten und Kontext.
Der Durchsatz hängt von Modell, Quantisierung, Eingabelänge und Parallelität ab.
SitzungsdetailsBeispiel
SitzungSSH-LoginXcode-Buildfastlane-BuildCI RunnerVNC-DesktopMLX-Inferenz
StandortSingapur · SG
ModellShell M4
KonfigurationM4 · 16GB · 256GB
AbrechnungszeitraumPro Tag · $21.8
BereitgestelltTag 1, 09:02
Läuft abTag 2, 09:02
StandortauslastungVerfügbar
Beispielzeitraum24h
38 % genutztNoch etwa 15 Stunden
Verfügbarkeit, Bereitstellungszeit und Ablaufzeit werden aktuell in der Konsole angezeigt.