Si vous aimez le projet, s'il vous plaît ★ Star ce référentiel pour montrer votre support! ?
15 janvier 2024 - Alors que je réfléchis au voyage de Spago, je suis rempli de gratitude pour l'expérience enrichissante qu'elle m'a fourni. La maîtrise de GO et revisiter les principes fondamentaux de l'apprentissage en profondeur à travers Spago a été extrêmement gratifiant. Les caractéristiques uniques de Spago, en particulier son graphique de calcul asynchrones et se concentrant sur le codage propre, en ont fait un projet extraordinaire sur lequel travailler. Notre objectif était de créer un cadre ML minimaliste dans GO, éliminant la dépendance à Python dans la production en permettant la création d'exécutables autonomes. Cette approche de Spago a réussi à alimenter plusieurs de mes projets dans des environnements de production difficiles.
Cependant, l'effort d'élever Spago à un niveau où il peut rivaliser efficacement dans l'évolution de «l'espace d'IA», qui implique désormais largement le calcul sur les GPU, nécessite un engagement substantiel. Dans le même temps, la vision que Spago aspirait à réaliser est désormais réalisée de manière impressionnante par le projet de bougies à Rust. Avec ma capacité limitée à consacrer l'attention nécessaire à Spago, et en l'absence d'une équipe de maintenance à l'appui, j'ai pris la décision pragmatique de suspendre le projet pour l'instant.
Je suis profondément reconnaissant pour le voyage que Spago m'a pris et pour la communauté qui l'a soutenu. Alors que nous continuons d'explorer le domaine en constante évolution de l'apprentissage automatique, je suis impatient des développements passionnants qui nous attendent.
Cordialement,
Matteo Grella
Spago est une bibliothèque d'apprentissage automatique écrite en pure GO conçue pour soutenir les architectures neuronales pertinentes dans le traitement du langage naturel .
Spago est autonome, en ce qu'il utilise son propre graphique de calcul léger à la fois pour la formation et l'inférence, facile à comprendre du début à la fin.
Il fournit:
Si vous êtes intéressé par les fonctionnalités liées à la PNL, assurez-vous d'explorer le package Cybertron!
Exigences:
Clone ce repo ou obtenez la bibliothèque:
go get -u github.com/nlpodyssey/spagoUn bon point de départ est de regarder la mise en œuvre de modèles neuronaux intégrés, comme le LSTM.
Voici un exemple de la façon de calculer la somme de deux variables:
package main
import (
"fmt"
"log"
"github.com/nlpodyssey/spago/ag"
"github.com/nlpodyssey/spago/mat"
)
func main () {
// define the type of the elements in the tensors
type T = float32
// create a new node of type variable with a scalar
a := mat . Scalar ( T ( 2.0 ), mat . WithGrad ( true )) // create another node of type variable with a scalar
b := mat . Scalar ( T ( 5.0 ), mat . WithGrad ( true )) // create an addition operator (the calculation is actually performed here)
c := ag . Add ( a , b )
// print the result
fmt . Printf ( "c = %v (float%d) n " , c . Value (), c . Value (). Item (). BitSize ())
c . AccGrad ( mat . Scalar ( T ( 0.5 )))
if err := ag . Backward ( c ); err != nil {
log . Fatalf ( "error during Backward(): %v" , err )
}
fmt . Printf ( "ga = %v n " , a . Grad ())
fmt . Printf ( "gb = %v n " , b . Grad ())
}Sortir:
c = [7] (float32)
ga = [0.5]
gb = [0.5]Voici une simple implémentation de la formule Perceptron:
package main
import (
"fmt"
. "github.com/nlpodyssey/spago/ag"
"github.com/nlpodyssey/spago/mat"
)
func main () {
x := mat . Scalar ( - 0.8 )
w := mat . Scalar ( 0.4 )
b := mat . Scalar ( - 0.2 )
y := Sigmoid ( Add ( Mul ( w , x ), b ))
fmt . Printf ( "y = %0.3f n " , y . Value (). Item ())
}Si vous pensez que quelque chose manque ou pourrait être amélioré, veuillez ouvrir des problèmes et tirer les demandes.
Pour commencer à contribuer, vérifiez les directives contributives.
Nous vous encourageons fortement à créer un problème car il contribuera à la croissance de la communauté. Cependant, si vous préférez communiquer avec nous en privé, n'hésitez pas à envoyer un e-mail à Matteo Grella avec toutes les questions ou commentaires que vous pourriez avoir.