(P) Besoin de conseils sur mon projet Steam

 (P) Besoin de conseils sur mon projet Steam


r / machinesearning! Je suis étudiant en maîtrise et je viens d’envelopper mon projet d’analyse du Big Data. J’ai passé quelques mois à ce sujet et j’ai finalement fait fonctionner quelque chose qui me passionne.

TL; DR: Système de transformateur distribué construit pour analyser les avis de jeu. Est passé de 30 minutes à 2 minutes de temps. A appris que la parallélisation des transformateurs est vraiment difficile mais réalisable. Maintenant, je ne sais pas quoi en faire? À la recherche de conseils sur les étapes suivantes et les commentaires

lien github: https://github.com/matrix030/steamlens

https://preview.redd.it/p13mdqmct45f1.png?width=2348&format=png&auto=webp&s=5f5c44b7c5a618526372e26cb0f625f2970a3703

https://preview.redd.it/2wotiqmct45f1.png?width=2358&format=png&auto=webp&s=c98ee0945138f3dddbc9f4589ac8cbc3fc104a20

Le problème qui a tout commencé en tant que joueur, je me demandais toujours comment les développeurs indépendants traitent des centaines de milliers de critiques. Par exemple, la société mortelle Dev a 300k + avis – comment commencez-vous même à traiter ces commentaires? Il n’y a littéralement aucun bon outil pour les développeurs de jeux pour comprendre ce que les joueurs pensent réellement des aspects spécifiques de leurs jeux.

J’ai donc décidé d’en construire un moi-même pour mon projet Big Data.

Ma configuration, je l’exécute sur mon bureau: Ryzen 9 7900x, 32 Go de RAM, RTX 4080 Super (16 Go VRAM). Les données de revue Steam grattées à l’aide de leur API Web – se sont retrouvées avec des ensembles de données de 40 Go contenant 17m + avis (Disponible sur Kaggle).

Le cauchemar séquentiel, ma première approche, était la chose évidente – traitez tout séquentiellement. Les avis de 400K ont pris plus de 30 minutes. Pour mon calendrier de projet, c’était douloureux. Mais plus important encore, j’ai réalisé qu’aucun développeur indépendant n’utiliserait un outil qui prend une demi-heure pour analyser leurs critiques.

La percée (et la répartition mentale proche) Le véritable défi n’était pas le traitement des données – c’était paralléliseur des transformateurs. Ces modèles sont notoirement difficiles à distribuer en raison de la façon dont Pytorch gère les tenseurs et la mémoire GPU.

Mon premier "fonctionnement" La version a donné à chaque travailleur en dask sa propre copie du modèle Transformer. Cela a fonctionné mais mangeait 6x plus de mémoire qu’il ne le devrait. Avec 6 travailleurs, je chargeais essentiellement le même modèle 6 fois.

Puis vint la session de débogage à 3 heures du matin de l’enfer. Erreurs de sérialisation du tenseur partout. Tenseurs Cuda refusant de se déplacer entre les processus. Fuites de mémoire. Les œuvres.

Le correctif qui a sauvé ma santé mentale: publiez une fois le modèle Transformer vers le cluster en phase de base et donnez à chaque travailleur une poignée à la même instance de modèle. L’utilisation de la mémoire a chuté 6x, et tout à coup tout était rapide et stable.

Ce que j’ai construit automatiquement le système:

  • Détecte votre matériel (cœurs CPU, GPU, RAM)
  • Pays Optimal Nombre de travailleurs
  • Charge des modèles de transformateur une fois et partage entre les travailleurs
  • Processus examine en parallèle avec un lot intelligent
  • Sépare le sentiment positif / négatif avant de résumer

Résultats qui ont rendu mon professeur heureux des mêmes avis 400k: 30 minutes → 2 minutes (15x accélération)

L’impact du monde réel, ce n’est pas seulement un exercice technique cool. Des développeurs indépendants comme la personne derrière Lethal Company ou Stardew Valley pourraient réellement l’utiliser. Au lieu de lire manuellement des centaines de milliers de critiques, ils obtiennent des idées automatisées comme:

"Système de combat – Les joueurs aiment: commandes réactives et mécanique satisfaisante" "Système de combat – Les joueurs détestent: les problèmes d’équilibre avec l’arme x"

Optimisation du matériel:

  • RTX 4080 Super: 96 échantillons par lot
  • CPU Fallback: 16 échantillons par lot
  • Auto-Cleanup empêche les explosions de mémoire GPU

L’architecture en phase de base:

  • Dynamique des travailleurs reproducteur en fonction des spécifications du système
  • Partitionnement de données intelligent
  • Tolérance aux défauts pour quand les choses se cassent inévitablement

Erreurs qui m’ont tout appris

  1. Essayer de sérialiser les tenseurs Cuda (a appris cela à la dure)
  2. Ne pas nettoyer la mémoire GPU entre les lots
  3. Définir les tailles de lots trop élevées et écraser mon système plusieurs fois
  4. Sous-estimer à quel point le débogage distribué est douloureux

Limitations actuelles (être honnête)

  • Single Machine uniquement (pas encore de grappes multi-nœuds)
  • La mémoire des GPU encore des goulots d’étranglement vraiment massifs
  • La gestion des erreurs pourrait être bien meilleure
  • Fonctionne uniquement avec les critiques anglaises en ce moment

Là où je suis coincé (et pourquoi je suis ici), j’ai terminé mon projet, cela fonctionne très bien, mais maintenant je ne sais pas quoi en faire.

Mais honnêtement? Je n’ai aucune idée de la direction qui a le plus de sens.

Questions pour le Reddit Brain Trust:

  1. Des améliorations évidentes à l’architecture distribuée?
  2. Dois-je me concentrer sur la mise à l’échelle ou le polissage ce que j’ai?
  3. Quelqu’un sait-il si les développeurs de jeux trouveraient cela utile?

Le "Quelle est la prochaine étape" Problème Je ne suis vraiment pas sûr des prochaines étapes. Une partie de moi veut continuer à améliorer le côté technique (support multi-GPU, meilleure mise à l’échelle, quantification du modèle). Une partie de moi pense que je devrais me concentrer sur le rendre plus convivial pour les développeurs de jeux réels.

Vous vous demandez également si cela pourrait fonctionner pour d’autres domaines – comme analyser les avis sur les produits sur Amazon, les avis sur l’App Store, etc.

Des défis techniques me dérangent encore:

  • Échelle multi-GPU dans une seule machine
  • Meilleures stratégies d’optimisation de la mémoire
  • Gestion des ensembles de données vraiment massifs (10m + avis)
  • Traitement en temps réel au lieu de lot uniquement

À la recherche de conseils sur les étapes suivantes et les commentaires de toute personne qui a abordé des défis ML distribués similaires!

Merci d’avoir lu – Toutes les pensées appréciées! 🎮

soumis par / u / matrix_030
(lien) (Commentaires)



Source link

Related post