Research-Driven Agents: When an agent reads before it codes
En ajoutant une phase de recherche bibliographique à la boucle autoresearch/pi-autoresearch et en lançant un agent sur quatre VMs cloud via SkyPilot, l'équipe a produit en ~3 heures cinq optimisations qui ont rendu la génération texte FlashAttention de TinyLlama 1.1B environ +15 % plus rapide sur x86 et +5 % sur ARM pour un coût total d'environ 29 $. L'expérience montre que les agents qui lisent des articles et étudient des forks et backends concurrents avant d'écrire du code trouvent des optimisations (notamment des fusions d'opérateurs présentes dans CUDA/Metal mais absentes du backend CPU) que les agents se basant uniquement sur le code ratent. Cinq changements ont été mergés (sur 30+ essais) : fusion de passes pour softmax et RMS norm, une parallélisation adaptative du from_float, une fusion graph-level RMS_NORM+MUL inspirée des autres backends, et une fusion KQ de la voie flash attention, la plus importante étant la fusion de trois passes du tile QK en une boucle AVX2 FMA. La première série d'expériences focalisée sur des micro‑optimisations SIMD a peu rapporté parce que l'inférence batch‑1 est limitée par la bande passante mémoire plutôt que par le calcul, d'où la nécessité d'identifier et d'éliminer des passes mémoire plutôt que d'optimiser des boucles déjà vectorisées par le compilateur. Le pipeline écrit ses propres scripts de bench et de vérification, ventile les builds et tests sur des VMs via SkyPilot, et bien que plusieurs tentatives aient échoué (bugs de parsing, variabilité des VMs partagées, échecs d'implémentation), la méthode est réutilisable pour tout projet disposant d'un benchmark et d'une suite de tests.