Dauerhaft verfügbare Engineering-Workflows

Entwicklung, Builds und Inferenz auf einem Cloud-Mac

VMKeep bietet dauerhaft laufende dedizierte physische Apple-Silicon-Macs statt virtueller Maschinen. Teams können Chip, Arbeitsspeicher und Toolchain festlegen und MLX-Inferenz, mobile Builds und Remote-Zusammenarbeit in wiederverwendbare Abläufe überführen.

3
Entwicklungs-, Build- und Inferenzpfade
3
Feste Apple-Silicon-Konfigurationen
5
Bestellbare Knoten oder Rechenzentren
RUN DOSSIER Dossier zur kontinuierlichen Aufgabenorchestrierung
Knoten online
Drei Workload-Typen für Cloud-Macs Modellinferenz, mobile Builds und Remote-Entwicklung laufen jeweils auf festen Apple-Silicon-Knoten und liefern APIs, Archivartefakte und Remote-Arbeitsbereiche. MLX BUILD DEV APPLE SILICON OUT
Inferenzdienst Modell → MLX → API Dauerhaft aktiv
Mobiler Build Quellcode → Tests → Archiv Reproduzierbar
Remote-Entwicklung SSH / VNC → Arbeitsbereich Dedizierter Knoten
Feste Konfigurationen reduzieren Umgebungsabweichungen M4 · M4 Pro
Überblick der Anwendungsfälle

Ermitteln Sie zuerst die Anforderungen und entscheiden Sie dann, ob ein Knoten dauerhaft belegt werden sollte

Aufgaben für Cloud-Macs haben meist drei Merkmale: Sie benötigen macOS oder Apple Silicon, laufen über die lokale Arbeitszeit hinaus und erfordern eine feste Umgebung zur Reproduzierbarkeit. Für kurze lokale Prüfungen reicht das vorhandene Gerät möglicherweise aus.

Entwicklungspfad

Arbeitsbereich remote behalten

Nutzen Sie SSH für die Entwicklung über die Befehlszeile und Automatisierung sowie VNC für die grafische macOS-Oberfläche. Code, Abhängigkeiten und lokale Dienste bleiben dauerhaft erhalten, ohne dass die Umgebung täglich neu eingerichtet werden muss.

Eingabe
Repository, Lockfiles, Entwicklungstools
Ausführung
Interaktive Entwicklung, Debugging, kurzfristige Zusammenarbeit
Ergebnis
Commits, Testergebnisse, wiederverwendbarer Arbeitsbereich
Build-Pfad

Pipeline an eine feste Maschine übergeben

Platzieren Sie Runner, Xcode, CocoaPods, Node.js und Abhängigkeits-Caches auf demselben physischen Knoten, damit jeder Build mit identischen Pfaden, Versionen und Berechtigungsgrenzen ausgeführt wird.

Eingabe
Quellcode, Build-Parameter, autorisierte Signaturmaterialien
Ausführung
Tests, Paketierung, Archivierung, Wiederholungen nach Fehlern
Ergebnis
Protokolle, Testberichte, nachvollziehbare Build-Artefakte
Inferenzpfad

Feste Hardware-Basis für Modelltests

Führen Sie MLX mit klar definierter Chip- und Arbeitsspeicherkonfiguration aus und protokollieren Sie Quantisierungsversion, maximalen Speicherbedarf, Zeit bis zum ersten Token und den kontinuierlichen Durchsatz, um Abweichungen zwischen Geräten zu vermeiden.

Eingabe
Modellgewichte, Quantisierungsparameter, Testsuite
Ausführung
Inferenzdienst, Batch-Tests, Protokollerfassung
Ergebnis
API, Benchmarkdaten, Grundlage für die Konfigurationswahl
MLX-Inferenzserver

Vom Modelldatei bis zur aufrufbaren Schnittstelle: zuerst den kürzesten Prüfpfad etablieren

Bei der ersten Bereitstellung müssen Sie nicht sofort eine komplexe Orchestrierung aufbauen. Prüfen Sie zunächst lokal, ob das Modell geladen wird, Anfragen beantwortet werden und der Speicherverbrauch nicht dauerhaft steigt. Erst danach sollte der Dienst für kontrollierte Aufrufer geöffnet werden.

  1. 01

    Modell- und Prüfinformationen vorbereiten

    Dokumentieren Sie Quelle, Version, Quantisierungsmethode, Kontextlänge und Prüfsumme der Modelldateien. Trennen Sie Modellverzeichnis und Servicelogik, damit Quantisierungsversionen ohne Änderung der Startlogik ausgetauscht werden können.

  2. 02

    Isolierte Laufzeitumgebung einrichten

    Fixieren Sie die Versionen von Python und MLX-Abhängigkeiten und hinterlegen Sie die Installationsliste im Repository. Führen Sie zunächst eine einzelne Inferenz über die Befehlszeile aus, um Tokenizer, Gewichtsformat und Speicherbedarf zu prüfen.

  3. 03

    Lokalen Listener starten

    Lassen Sie den Dienst zunächst auf der lokalen Adresse lauschen und ergänzen Sie Health Checks, Anfrage-Timeouts und strukturierte Protokolle. Prüfen Sie die Antwortstruktur mit festen Prompts und beobachten Sie anschließend Zeit bis zum ersten Token und maximalen Speicherbedarf.

  4. 04

    Anwendungsaufrufe anbinden

    Öffnen Sie den Zugriff erst nach stabilen lokalen Anfragen gemäß den Netzwerkregeln des Teams. Die Aufrufer sollten Timeout, Wiederholungen und Anfrage-ID beibehalten; der Dienst protokolliert Modellversion und Inferenzparameter.

REQUEST RECORD Beispiel für die lokale Prüfung
curl -X POST http://127.0.0.1:8080/infer \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Summarize build log",
    "max_tokens": 128
  }'
Zuerst prüfen
Ob das Modell geladen ist und der Prozessspeicher stabil bleibt
Dann erfassen
Zeit bis zum ersten Token, Gesamtdauer, Anzahl ausgegebener Token
Erst danach freigeben
Listener-Bereich, Zugriffskontrolle, Timeout der Aufrufer
KI-Modelltests

Nur mit fester Hardware und festen Eingabebedingungen sind Testergebnisse vergleichbar

Erfassen Sie nicht nur eine einzige Durchsatzkennzahl. Modellversion, Quantisierung, Kontextlänge, Parallelität und Aufwärmrunden verändern das Ergebnis. Frieren Sie zuerst die Testbedingungen ein und entscheiden Sie erst danach über einen Modellwechsel oder ein Upgrade.

Welche Daten eine nachvollziehbare Testrunde enthalten sollte

  • Hardware-Basis:Chip, Arbeitsspeicher, Systemversion und verfügbarer Speicherplatz.
  • Modell-Basis:Modellversion, Quantisierungsformat, Kontextlänge und Batch-Größe.
  • Ausführungs-Basis:Aufwärmrunden, Parallelität, Prompt-Sammlung und Abbruchbedingungen.
  • Ergebnis-Basis:Maximaler Speicherbedarf, Zeit bis zum ersten Token, kontinuierlicher Durchsatz, Fehler und Beendigungsgrund.
Erfassungsfelder und Bewertungskriterien für Modelltests
Erfassungsfeld Feste Bedingung Verwendungszweck
Quantisierungsversion Dasselbe Modell und dieselbe Kontextlänge Abwägung zwischen Genauigkeit, Speicherbedarf und Geschwindigkeit
Maximaler Speicherbedarf Identische Eingabe und Parallelität Prüfen, ob die Konfiguration ausreichend Reserven für einen stabilen Betrieb hat
Zeit bis zum ersten Token Identischer Aufwärmzustand Wartezeit interaktiver Anfragen bewerten
Kontinuierlicher Durchsatz Identische Ausgabelänge Leistung bei langen Ausgaben und Batch-Aufgaben bewerten
Fehlerprotokoll Anfrage-ID und Protokolle aufbewahren Modell-, Speicher-, Dienst- und Aufruferprobleme unterscheiden
iOS- und macOS-CI/CD

Kontinuierliche Builds in sechs überprüfbare Lieferpunkte aufteilen

Der Nutzen eines festen physischen Knotens besteht nicht nur darin, Xcode ausführen zu können. Er grenzt Quellcode, Abhängigkeiten, Tests, Signaturvorgänge und Archivspeicher klar voneinander ab. Fehler lassen sich entlang der Ausführung eingrenzen, statt Umgebungsunterschiede erneut zu erraten.

  1. 01

    Code abrufen

    Lesen Sie das angegebene Repository mit eingeschränkten Zugangsdaten aus und fixieren Sie Branch, Commit und Submodulstatus.

  2. 02

    Abhängigkeiten wiederherstellen

    Installieren Sie Abhängigkeiten anhand der Lockfiles und isolieren Sie Cache-Verzeichnisse nach Projekt und Version, damit alte Caches nicht stören.

  3. 03

    Build ausführen

    Legen Sie workspace, scheme, configuration und destination eindeutig fest und speichern Sie den vollständigen Befehl.

  4. 04

    Tests ausführen

    Protokollieren Sie Unit-, UI- und fehlgeschlagene Tests getrennt und bewahren Sie maschinenlesbare Berichte auf.

  5. 05

    Signierung verwalten

    Beschränken Sie den Zugriff auf Signaturmaterial und schreiben Sie Zertifikatinhalte oder vertrauliche Zugangsdaten nicht in Build-Protokolle.

  6. 06

    Artefakte archivieren

    Speichern Sie Archive, Protokolle und Testberichte nach Commit und Aufgaben-ID und legen Sie eine Bereinigungsstrategie fest.

Wiederholungen nach Fehlern sollten nicht mit dem Leeren der gesamten Umgebung beginnen

Ermitteln Sie zuerst die Fehlerphase und entscheiden Sie dann, ob Tests erneut ausgeführt, Abhängigkeiten neu erstellt oder Archive neu angelegt werden. Verwenden Sie unterschiedliche Wiederholungsstrategien für Cache-, Netzwerk- und Codefehler.

Unterstützung für Build-Anbindung ansehen
React-Native-Build

JavaScript-Abhängigkeiten und natives Projekt benötigen dieselbe Versionsdokumentation

React-Native-Builds umfassen Node.js, Paketmanager, CocoaPods und Xcode. Nur JavaScript-Paketversionen zu fixieren reicht nicht aus: Auch Ruby, Pods, Xcode-Projekteinstellungen und Build-Befehle gehören in eine reproduzierbare Liste.

Zusammenarbeit auf einer Maschine

Von der Abhängigkeitsinstallation bis zur automatisierten Veröffentlichung im selben Arbeitsverzeichnis

JavaScript Node.js → lockfile → bundling

Fixieren Sie Laufzeit und Paketmanager und unterscheiden Sie Caches anhand des Lockfile-Fingerabdrucks.

Native iOS-Schicht CocoaPods → workspace → xcodebuild

Dokumentieren Sie Pods-Status, scheme, Build-Konfiguration und Zielgerät.

Bereitstellungsschicht Tests → Archiv → Protokollaufbewahrung

Verknüpfen Sie Commit-ID, Build-Aufgabe und Artefaktverzeichnis.

Cache-Grenzen

Verwalten Sie JavaScript-Paket-, Pods- und Xcode-Derived-Data-Caches getrennt. Cache-Treffer können beschleunigen, dürfen aber keine Versionsabweichungen verdecken.

Empfohlen zu erfassen: Lockfile-Zusammenfassung, Pods-Status, Xcode-Version

Grenzen der Veröffentlichung

Automatisierungsskripte dürfen nur die benötigten Zugangsdaten lesen. Verbergen Sie vertrauliche Inhalte in Protokollen und bereinigen Sie temporäre Dateien nach dem Build gemäß den Teamrichtlinien.

Empfohlen aufzubewahren: Commit-ID, Aufgaben-ID, Artefaktprüfsumme
Remote-Entwicklungsarbeitsplatz

SSH für Automatisierung, VNC für Aufgaben mit grafischer Oberfläche

Beide Verbindungsarten können denselben dedizierten physischen Mac bedienen, dienen aber unterschiedlichen Zwecken. Aktualisieren Sie nach der ersten Verbindung das Passwort, konfigurieren Sie SSH-Schlüssel und beschränken Sie die Verteilung von Zugangsdaten. Verbindungsdaten und tatsächliche Verfügbarkeit liefert die Konsole in Echtzeit.

SSH

Geeignet für Befehlszeile und automatisierte Aufgaben

  • Repository-Verwaltung, Abhängigkeitsinstallation und Dienststart
  • Runner-Verwaltung, Protokollabfragen und Prozessprüfung
  • Portweiterleitung und kontrollierte API-Prüfung
VNC

Geeignet für die grafische macOS-Oberfläche

  • Xcode-Projekteinstellungen und Simulatorbedienung
  • Debugging und Prüfungen mit Fensterbedienung
  • Remote-Demos und kurzfristige Teamzusammenarbeit
Zugriffskontrolle

Geeignet für standortübergreifende Zusammenarbeit und kurzfristige Kapazitätserweiterung

  • Vergeben Sie entsprechend den Aufgaben der Mitglieder nur die unbedingt erforderlichen Berechtigungen.
  • Widerrufen Sie Schlüssel zeitnah, wenn Mitglieder das Projekt verlassen.
  • Exportieren Sie Daten vor Ablauf der Mietdauer und löschen Sie Zugangsdaten.
Parallele Aufgabenorchestrierung

Mehrere Knoten nach Warteschlange aufteilen, statt alle Aufgaben auf eine Maschine zu laden

Teams können unterschiedliche physische Knoten für Runner, Modellexperimente oder Build-Warteschlangen einsetzen. Jeder Knoten dokumentiert Aufgabenbereich, Umgebungsversion und Artefaktverzeichnis separat. Fehleranalyse und Kapazitätsplanung werden dadurch direkter als in einer gemeinsam genutzten Mischumgebung.

Aufgabeneingang Nach Workload verteilen
RUNNER-A
Tägliche iOS-Builds

Abhängigkeiten, Tests und Archivierung laufen in einem festen Build-Verzeichnis.

Kontinuierliche Warteschlange
RUNNER-B
React-Native-Release-Builds

JavaScript-, Pods- und Xcode-Derived-Data-Caches isolieren.

Release-Warteschlange
MLX-TEST
Modell-Quantisierungstests

Chip, Arbeitsspeicher, Modellversion und Eingabebedingungen fixieren.

Experiment-Warteschlange
Empfehlung zur Auswahl

Konfiguration nach Speicherreserve und Aufgabendauer wählen

Alle drei Modelle sind dedizierte physische Apple-Silicon-Macs statt virtueller Maschinen. Für leichte Prüfungen steht die Kostenkontrolle im Vordergrund, bei kontinuierlichen Pipelines Cache und Parallelität; bei speicherintensiver Inferenz sollte zuerst der maximale Bedarf nach dem Laden des Modells geprüft werden.

Leichte Prüfung

VMKeep M4 Core

M4 · 16GB · 256GB

Geeignet für die Entwicklung eines einzelnen Projekts, leichte iOS-Builds, MLX-Umgebungsprüfungen und Kompatibilitätstests kleiner Modelle. Bei knappem Speicher sollten Caches und Artefaktbereinigung früh geplant werden.

Empfohlene Aufgaben Kurzfristige Entwicklung, Build mit einer Warteschlange, Prüfung der Inferenz-Machbarkeit
$19.2/ Tag
VMKeep M4 Core auswählen
Speicherintensive Inferenz

VMKeep M4 Pro

M4 Pro · 64GB · 2TB

Geeignet für speicherintensive MLX-Inferenz, Quantisierungsvergleiche größerer Modelle, parallele Experimente und stark ausgelastete Build-Warteschlangen. Führen Sie die Validierung zunächst mit realem Modell und realen Parallelitätsparametern durch.

Empfohlene Aufgaben Speicherintensive Modelle, parallele Aufgaben, umfangreiche Build-Archivierung
$60.8/ Tag
VMKeep M4 Pro auswählen
5 bestellbare Knoten oder Rechenzentren Singapur, Japan (Tokio), Südkorea (Seoul), Hongkong, US-Ostküste

Alle drei Modelle sind an den fünf genannten Knoten bestellbar. Die tatsächliche Verfügbarkeit liefert die Konsole in Echtzeit.

Konfiguration starten

Reale Aufgaben einem festen Cloud-Mac zuordnen

Wählen Sie zunächst die Konfiguration und danach Singapur, Japan (Tokio), Südkorea (Seoul), Hongkong oder die US-Ostküste als Knoten. Legen Sie anschließend die Mietdauer pro Tag, Woche, Monat oder Quartal fest. Bestellung und Maschinenverwaltung erfolgen über die Konsole.