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
Ouvrez une connexion au bureau dans un autre terminal local :
~ $ open vnc://localhost:5901
Activez le partage d’écran sur le nœud avant d’utiliser le tunnel SSH.
dev@sg-node ~ % sudo lsof -iTCP:5900 -sTCP:LISTEN
COMMAND PID USER TYPE NAME
screensharingd 402 root IPv4 TCP *:rfb (LISTEN)
N’exposez pas directement le port du bureau sur Internet.
Le bureau sert à vérifier l’interface ; les tâches en série peuvent toujours s’exécuter en ligne de commande.
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)
Vérifiez d’abord l’environnement, puis prévoyez la mémoire nécessaire aux poids du modèle et au contexte.
Le débit dépend du modèle, de la quantification, de la longueur des entrées et du parallélisme.
Détails de la sessionAperçu
SessionConnexion SSHBuild XcodeBuild fastlaneCI RunnerBureau VNCInférence MLX
EmplacementSingapour · SG
ModèleShell M4
ConfigurationM4 · 16GB · 256GB
DuréeÀ la journée · $21.8
ActivationJour 1, 09:02
ExpirationJour 2, 09:02
DisponibilitéDisponible
Exemple de durée24h
38 % écoulésEnviron 15 h restantes
La disponibilité réelle, le délai de mise à disposition et l’heure d’expiration sont ceux indiqués en temps réel dans le portail.