Préparer son premier projet

Lancez le modèle,
puis faites durer vos essais.

Cette checklist s’adresse aux personnes qui viennent de louer un OsxNode M4-16. Connectez-vous à votre Mac dédié, vérifiez Python et MLX, puis lancez une courte génération pour contrôler la mémoire disponible. Cette configuration comprend une puce M4, 16 Go de mémoire unifiée et un SSD de 256 Go.

Avant la première connexion, gardez votre numéro de commande à portée de main. Exportez vos résultats avant l’échéance. Une connexion réussie ne garantit pas que n’importe quel modèle puisse tenir dans 16 Go de mémoire unifiée.

Vérifier la mise à disposition

Ouvrez macOS depuis la fiche du nœud

Après confirmation du paiement, le service est activé le jour même. La mise à disposition est confirmée lorsque le nœud et ses identifiants de connexion apparaissent dans le portail. Si le paiement est terminé mais que les identifiants ne sont pas encore visibles, vérifiez la commande concernée et ne passez pas une seconde commande.

  1. 01

    Connectez-vous et vérifiez le nœud

    Connectez-vous au portail avec l’adresse e-mail utilisée lors de la commande, puis ouvrez la fiche de l’instance ou de l’abonnement. Vérifiez le numéro de commande, le nom du nœud et la date d’échéance. Le nom du nœud doit correspondre à celui choisi lors de l’achat. L’adresse de connexion, le nom d’utilisateur et le port indiqués dans les détails de l’instance font foi.

  2. 02

    Ouvrez le bureau à distance

    Dans la fiche du nœud ou ses détails, cliquez sur « Ouvrir le bureau à distance » et connectez-vous à macOS avec les identifiants fournis dans le portail. Vérifiez que votre navigateur autorise le bon fonctionnement de la page de connexion. La page d’aide publique ne permet pas d’accéder au bureau à distance.

  3. 03

    Changez le mot de passe initial

    Lors de votre première session, modifiez le mot de passe initial du compte utilisé dans Réglages Système, rubrique Utilisateurs et groupes, puis enregistrez-le dans votre gestionnaire de mots de passe. Vérifiez que le nouveau mot de passe fonctionne avant de fermer la session. Ne communiquez ni le mot de passe initial ni le nouveau dans un ticket.

Pendant toute la durée de la location, un Mac physique est attribué à un seul locataire. Il ne s’agit pas d’une machine virtuelle. Fermer le navigateur met fin à l’affichage en cours, mais pas à la location. Pour laisser tourner une tâche, lancez-la dans une session séparée comme indiqué plus bas.

Préparer l’environnement

Isolez les dépendances avant d’installer MLX

Exécutez les commandes ci-dessous dans Terminal sur le Mac à distance, et non sur votre ordinateur. Un environnement virtuel séparé permet d’isoler les paquets Python de ce projet des autres tâches. N’installez pas de paquets globalement dans le Python système.

Vérifier l’architecture et Homebrew

uname -m
command -v brew
brew --version

L’architecture attendue est arm64. Les deux dernières commandes doivent renvoyer le chemin et la version de Homebrew. Si brew est introuvable, suivez d’abord les instructions d’installation officielles de Homebrew. Ne collez pas dans Terminal de script d’installation provenant d’une source inconnue.

Créer l’environnement Python du projet

brew install python@3.11
mkdir -p "$HOME/experiments/mlx-first"
cd "$HOME/experiments/mlx-first"
python3.11 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install mlx mlx-lm
python -c 'import platform; import mlx.core as mx; from importlib.metadata import version; print(platform.machine()); print("mlx", version("mlx")); print("mlx-lm", version("mlx-lm")); print(mx.array([1, 2, 3]) + 1)'

Une fois l’installation terminée, la commande de vérification doit afficher arm64, les versions installées des deux paquets et un tableau contenant [2, 3, 4]. Les versions peuvent varier selon la date d’installation : ne vous fiez pas à un numéro de version précis pour confirmer la réussite.

Enregistrer les dépendances pour les réinstaller

python --version
python -m pip freeze > requirements.txt
python -m pip check

En l’absence de conflit entre dépendances, la dernière commande renvoie généralement No broken requirements found.. À la prochaine ouverture de Terminal, accédez au dossier du projet et exécutez source .venv/bin/activate avant de lancer l’inférence. Ne migrez pas uniquement le dossier de l’environnement virtuel : conservez aussi la liste des dépendances et vos scripts.

Surveiller la mémoire

Lancez une courte inférence pour vérifier la marge disponible

Les 16 Go de mémoire unifiée sont partagés entre le CPU, le GPU et le système : ils ne sont pas entièrement disponibles pour le modèle. Au-delà des poids, il faut compter le cache de contexte, l’environnement d’exécution et les autres applications. À taille de paramètres égale, le pic d’utilisation peut varier selon le format de quantification et la longueur du contexte.

Vérifiez l’espace avant le téléchargement

Vérifiez d’abord la taille des fichiers du modèle, les conditions d’utilisation et l’espace disque disponible. Pour les poids et jeux de données que vous réutiliserez, privilégiez le disque supplémentaire acheté en option. Vérifiez son chemin de montage dans le Finder ou Utilitaire de disque.

Augmenter la capacité du SSD n’ajoute pas de mémoire unifiée aux 16 Go. Sans disque supplémentaire, utilisez un dossier du disque principal et limitez la taille du cache. Ne copiez pas directement un nom de volume qui n’existe pas.

Surveillez la pression mémoire au chargement

Ouvrez « Moniteur d’activité → Mémoire » et surveillez la pression mémoire ainsi que la mémoire utilisée comme swap. Fermez les applications graphiques inutilisées, limitez la longueur de sortie et augmentez progressivement le contexte. Notez le nom du modèle, sa quantification et les paramètres de la commande.

Si la pression passe au jaune, n’augmentez pas le nombre de tâches simultanées : raccourcissez le contexte ou choisissez un modèle quantifié plus petit. En cas de pagination persistante ou d’arrêt du processus, ne relancez pas la même tâche à l’identique.

Générer d’abord un court texte

cd "$HOME/experiments/mlx-first"
source .venv/bin/activate
export HF_HOME="$HOME/model-cache"
mkdir -p "$HF_HOME"
df -h "$HF_HOME"
python -m mlx_lm.generate \
  --model mlx-community/Qwen2.5-3B-Instruct-4bit \
  --prompt "Expliquez la mémoire unifiée en trois phrases." \
  --max-tokens 128

Au premier lancement, la commande télécharge le modèle indiqué. Si tout se passe bien, elle affiche le texte généré ; certaines versions affichent également des statistiques de génération. Cet exemple ne garantit ni durée de téléchargement ni débit en tokens/s. Si vous utilisez un disque supplémentaire, définissez HF_HOME sur un dossier du disque dont vous avez vérifié l’existence et les droits d’écriture, puis gardez le même chemin dans les sessions suivantes.

Commencez par tester une inférence avec un modèle 3B en 4 bits ou un modèle 7B en 4 bits avec un contexte court, avant d’augmenter la charge. Les modèles 13B et plus en 8 bits ne sont pas recommandés sur notre configuration 16 Go. Un fine-tuning LoRA nécessite aussi de la mémoire pour l’état d’entraînement et les activations : une inférence réussie ne garantit pas que l’entraînement fonctionnera.

Entrées et résultats

Envoyez vos données, récupérez vos résultats

SSH sert à exécuter des commandes, scp à copier des fichiers ponctuellement et rsync à synchroniser des fichiers à plusieurs reprises ou à reprendre un transfert interrompu. Vérifiez dans le portail que SSH est activé et relevez ses paramètres de connexion. L’accès au bureau depuis le navigateur ne signifie pas que SSH est déjà configuré.

Saisir les paramètres de connexion dans Terminal

read -r -p "SSH user: " REMOTE_USER
read -r -p "SSH host: " REMOTE_HOST
read -r -p "SSH port: " SSH_PORT
ssh -p "$SSH_PORT" "$REMOTE_USER@$REMOTE_HOST" \
  'mkdir -p ~/experiments/data ~/experiments/results'
scp -P "$SSH_PORT" ./dataset.jsonl \
  "$REMOTE_USER@$REMOTE_HOST:~/experiments/data/"
rsync -avP -e "ssh -p $SSH_PORT" ./data/ \
  "$REMOTE_USER@$REMOTE_HOST:~/experiments/data/"
rsync -avP -e "ssh -p $SSH_PORT" \
  "$REMOTE_USER@$REMOTE_HOST:~/experiments/results/" ./results/

Ces commandes utilisent la syntaxe Bash et doivent être exécutées dans un shell Bash local. Renseignez l’hôte, l’utilisateur et le port indiqués dans les détails de l’instance. Lors de la première connexion, vérifiez l’empreinte de l’hôte. Ne contournez pas une anomalie en désactivant cette vérification. L’exemple rsync n’active pas l’option de suppression ; la barre oblique finale du dossier source indique que son contenu doit être synchronisé.

Découpez et vérifiez les gros fichiers

Si la connexion est instable, découpez les grosses archives en volumes de 1 024 Mo et envoyez-les un par un. Le découpage facilite le transfert, mais ne compresse pas le fichier et ne réduit pas l’espace disque total nécessaire.

shasum -a 256 dataset.tar
split -b 1024m dataset.tar dataset.part-
cat dataset.part-* > dataset-restored.tar
shasum -a 256 dataset-restored.tar

Découpez l’archive à la source et reconstituez-la à destination. Avant de l’extraire, vérifiez que les deux sommes SHA-256 correspondent. Si l’archive et tous ses volumes sont conservés en même temps, prévoyez assez d’espace pour les deux copies.

Exécutez les tâches longues dans une session dédiée

Installez tmux sur le Mac à distance, ouvrez une session et lancez-y votre commande d’inférence. Appuyez sur Ctrl+B, puis sur D pour vous détacher de la session et pouvoir vous y reconnecter plus tard.

brew install tmux
tmux new -s mlx
tmux attach -t mlx

Lancez la tâche dans la nouvelle session, puis utilisez attach après vous être reconnecté. tmux permet de poursuivre après une déconnexion SSH, mais pas après l’arrêt ou le redémarrage de l’instance ni après la fin de la location.

Suivre la durée de location

Renouvelez et exportez vos données avant l’échéance

La location du Mac se règle à l’avance à la journée, à la semaine, au mois ou au trimestre. Sans renouvellement, le service s’arrête automatiquement à l’échéance et aucun frais supplémentaire n’est facturé. Fiez-vous à la date d’échéance affichée dans le portail pour planifier les tâches et les sauvegardes ; la présence du bureau dans le navigateur ne permet pas de connaître l’état de la location.

  1. 01

    Renouvelez à l’avance pour poursuivre le projet

    Avant l’échéance, ouvrez l’abonnement concerné dans le portail, consultez les options de renouvellement disponibles et effectuez le paiement. Vérifiez ensuite la nouvelle date d’échéance. Les seuls moyens de paiement acceptés sont USDT-TRC20 et Visa / Mastercard / Amex via Stripe. Les paiements sont traités en dollars ; les moyens effectivement disponibles sont ceux affichés par le portail.

  2. 02

    Vérifiez votre sauvegarde si vous ne renouvelez pas

    Avant l’échéance, exportez les jeux de données, scripts de test, listes de dépendances, journaux et résultats, puis vérifiez que les fichiers s’ouvrent en local. Contrôlez la somme de vérification des archives importantes. Fermer le bureau à distance ne synchronise pas vos résultats : un fichier absent de votre ordinateur n’est pas sauvegardé.

  3. 03

    L’arrêt du service ne vaut pas conservation des données

    À l’échéance, le service s’arrête. Après récupération du nœud, le disque est effacé et le système réinstallé avant une nouvelle attribution. Aucune durée de conservation des données accessibles après l’arrêt ni aucune récupération après effacement n’est garantie. Si une commande prévoit des modalités particulières de traitement des données, référez-vous aux conditions confirmées pour cette commande et dans le ticket.

Nous ne garantissons pas une durée uniforme de conservation après l’arrêt, par exemple « quelques heures ». Si vous ne savez pas si la sauvegarde est terminée, contactez l’assistance via un ticket pendant la période de location. Ne comptez pas sur une nouvelle location après l’échéance pour retrouver les données de l’ancien disque.

Comprendre les informations de l’instance

Le sens de ces termes dans vos projets

Capacité, mode de connexion et durée de facturation sont des éléments distincts. Distinguez-les pour déterminer si un problème vient de la taille du modèle, de l’accès réseau ou de l’état de la location.

Nœud physique
Région où se trouve la machine physique qui fournit le service Mac cloud. Les paramètres de connexion figurent dans les détails de l’instance concernée.
Dédié
Pendant la location, un Mac physique est attribué à un seul locataire. La mémoire unifiée et les cœurs GPU ne sont pas partagés avec d’autres locataires.
Mémoire unifiée
Espace mémoire partagé par le CPU et le GPU. Notre configuration dispose de 16 Go, utilisés par le système, les modèles et l’environnement d’exécution.
VNC
Mode de connexion permettant d’afficher et de piloter un bureau à distance. Il transmet l’écran et les entrées, mais ne remplace pas le transfert de fichiers par SSH.
Partage d’écran
Permet de piloter un bureau macOS à distance avec un client compatible. L’adresse de connexion et les identifiants sont disponibles dans le portail.
Runner auto-hébergé
Processus d’exécution CI déployé par l’utilisateur sur la machine louée. Une fois la location terminée et le service arrêté, les tâches de build ne peuvent plus s’exécuter.
Quantification
Nombre de bits utilisé pour représenter les poids du modèle. Il influe sur la taille des poids et les résultats générés. Réduire ce nombre ne réduit pas nécessairement la mémoire d’exécution dans les mêmes proportions.
Pression mémoire
Indicateur de l’utilisation de la mémoire dans Moniteur d’activité. S’il passe au jaune, réduisez le nombre de tâches simultanées, le contexte ou la taille du modèle au lieu de vous fier uniquement au chiffre de mémoire restante.
Conservez les éléments utiles au diagnostic

Identifiez la cause à partir des symptômes

Enregistrez le message d’erreur et l’heure à laquelle il est apparu avant de modifier quoi que ce soit. Évitez les redémarrages successifs au hasard : vous pourriez interrompre une expérience non sauvegardée et perdre des informations utiles au diagnostic.

Le bureau à distance est connecté, mais l’écran reste noir

La connexion du navigateur n’est peut-être pas complètement établie, la session de bureau peut être dans un état anormal ou le nœud peut être inaccessible. Un écran noir ne suffit pas à prouver que la machine est arrêtée.

  1. Vérifiez l’état de l’instance et sa date d’échéance dans le portail pour confirmer que la commande est toujours active.
  2. Fermez la page de connexion actuelle et rouvrez le bureau depuis les détails de la même instance. Essayez à nouveau après avoir temporairement désactivé les extensions de navigateur susceptibles de bloquer la connexion.
  3. Si SSH est configuré, vérifiez avec SSH si la machine est toujours accessible. Ne modifiez pas les paramètres réseau à répétition pour effectuer des tests.
  4. Si vous ne pouvez toujours pas accéder au bureau, notez l’heure de l’écran noir, la version du navigateur et l’état de la connexion SSH, puis ouvrez un ticket. Si des tâches ne sont pas sauvegardées, signalez-le et n’effectuez pas immédiatement d’action sur l’alimentation.
Les caractères saisis ne correspondent pas aux touches du clavier

Un décalage peut venir de la méthode de saisie locale, de la source d’entrée de macOS à distance ou de la configuration du clavier dans le client. Il n’est généralement pas nécessaire de recréer l’instance.

  1. Testez d’abord lettres, chiffres et symboles dans un éditeur de texte ordinaire à distance. Ne faites pas d’essais dans un champ de mot de passe.
  2. Vérifiez la source d’entrée dans la barre des menus à distance, ainsi que les réglages du clavier et des méthodes de saisie dans Réglages Système.
  3. En cas de problème avec les raccourcis, vérifiez la configuration du clavier dans le client de connexion, notamment la correspondance des touches Command, Option et Control.
  4. Pour signaler le problème, indiquez « touche utilisée, caractère affiché ». N’envoyez pas de vrai mot de passe ni de clé privée comme texte de test.
Le chargement du modèle affiche Killed ou le processus s’arrête

Un manque de mémoire est une cause possible, mais vérifiez aussi l’espace disque, l’intégrité du fichier du modèle et les dépendances. Une seule ligne indiquant l’arrêt ne remplace pas le journal complet.

  1. Conservez la commande complète, la fin du message d’erreur, le nom du modèle, la quantification et les paramètres de contexte.
  2. Consultez la pression mémoire et l’utilisation du swap dans Moniteur d’activité. Fermez les autres applications gourmandes et testez avec une sortie plus courte et un modèle plus petit.
  3. Exécutez df -h pour vérifier le disque où se trouve le cache et vous assurer que le téléchargement ne s’est pas interrompu faute d’espace.
  4. Dans l’environnement virtuel activé, exécutez python -m pip check. Si même un petit modèle échoue, joignez au ticket le message d’erreur et les versions de l’environnement.
Faciliter la reproduction du problème

Pour votre ticket, joignez ces quatre types d’informations

Pour un problème sur une instance déjà activée, ouvrez de préférence un ticket depuis le portail après connexion afin qu’il soit associé à votre commande. Pour choisir une configuration avant achat ou si vous ne pouvez pas vous connecter, consultez la page de contact pour connaître les options par e-mail. Notre adresse d’assistance est support@osxnode.com.

Commande et nœud

Indiquez le numéro de commande, le nom du nœud et l’état actuel de l’instance. Pour un renouvellement ou un paiement, précisez le moyen de paiement et son état. Ne communiquez pas votre numéro de carte complet, votre mot de passe de connexion ni votre clé privée SSH.

Heure et fuseau horaire

Précisez l’heure de début du problème, sa durée et le fuseau horaire utilisé. Évitez les indications vagues comme « tout à l’heure ». Pour une demande liée à la disponibilité, indiquez la période d’interruption et le nom du nœud dans le ticket correspondant.

Étapes et erreurs

Décrivez les conditions préalables, les étapes pour reproduire le problème, le résultat attendu et le résultat obtenu. Pour un problème MLX, joignez l’identifiant du modèle, la quantification, la commande exécutée et les versions des dépendances. Masquez les informations sensibles dans les chemins de fichiers.

Vérifications effectuées

Indiquez les résultats des vérifications : nouvelle connexion au navigateur, accès SSH, pression mémoire et espace disque. Précisez si des tâches sont en cours ou n’ont pas encore été sauvegardées afin d’éviter toute interruption inutile.

Bloqué à une étape ? Joignez les éléments correspondants.

Dans votre ticket, indiquez l’instance concernée, l’heure et le message d’erreur. Si vous ne savez pas encore si un modèle conviendra aux 16 Go, précisez sa taille et sa quantification pour obtenir un avis.