Amazon SageMaker ist mehr als Machine Learning in python - er kann auch Teaching in go

This content is more than 4 years old and the cloud moves fast so some information may be slightly out of date.



Haben Sie nicht auch schon mal beim Durchlesen von Code Anleitungen gedacht, wie schön dass wäre, wenn die Anleitung und der Code zusammen ausführbar wären? Nun, genau das kann Amazon SageMaker! Amazon SageMaker unterstützt nicht nur bei der Erstellung von Code und Modellen für Machine Learning. Das “literal Programming”, also dokumentenzentrierte Programmierung kann auch mit anderen Sprachen, z.B. go/golang verwendet werden, um Code und Dokumentation als Paket zu verwenden.

Hier ein Beispiel, wie man die jupyter Notebooks mit go verwendet:

Zuerst muss man den “core” für die jeweilige Sprache installieren. Das passiert direkt im Terminal. Dazu wählt man in dem Hauptfenster von SageMaker unter “New” ganz unten das Terminal aus, um ein Terminalfenster zu öffnen.

Installation

Nun muss man folgende Komponenten installieren:

  1. Die Sprache go selber

    sudo yum -y install go

  2. Installation von zeromq (wird von gophernotes benötigt) Hierzu führt man folgenden gist aus: Install zeromq (zmq) library on fresh Amazon Linux

wget https://gist.githubusercontent.com/toebbel/6834175230afea9f05c1765fcf783627/raw/5280d173dc4531f56e318fd0b48df2421dd5003f/install.sh
chmod +x install.sh
sudo ./install.sh

gophernotes

Das go environment für SageMaker / jupyter heißt “gophernotes”. Ähnlich wie in der dort beschriebenen Installationsanleitung (siehe gophernotes) muss man direkt aus dem ec2-user Homeverzeichnis ausführen:

  1. go get -u github.com/gopherdata/gophernotes
  2. mkdir -p ~/.local/share/jupyter/kernels/gophernotes
  3. cp ./go/src/github.com/gopherdata/gophernotes/kernel/* ~/.local/share/jupyter/kernels/gophernotes

In dem Home Verzeichnis vom ec2-user sieht es dann in Bezug auf go in etwa so aus:

/home/ec2-user
sh-4.2$ tree  -L 4 go
go
├── bin
│   └── gophernotes
├── pkg
│   └── linux_amd64
│       └── github.com
│           └── gopherdata
└── src
    └── github.com
        └── gopherdata
            └── gophernotes

(Tree habe ich dazu installiert mit)

sudo yum -y install tree

Jetzt muss man noch den Pfad anpassen:

vi .local/share/jupyter/kernels/gophernotes/kernel.json

Die Datei sollte dann folgendermaßen aussehen:

Damit ist die Installation eines zusätzlichen Go Kerns für SageMaker fertig und man kann - nach einem Refresh des Hauptfensters, go notebooks anlegen:

Anlegen eines Go notebooks

In der Auswahl für neue Notebooks taucht nun “go” mit auf:

Ein Beispiel go notebook

Nun kan man eine Anleitung oder Lernmaterialien mit einem Wechsel von go code und Dokumentation einfach erstellen.

Zusammenfassung der Installation

sudo yum -y install go
# ready when
# Complete!
wget https://gist.githubusercontent.com/toebbel/6834175230afea9f05c1765fcf783627/raw/5280d173dc4531f56e318fd0b48df2421dd5003f/install.sh
chmod u+x install.sh
sudo ./install.sh
# ready when
# Complete!
#
go get -u github.com/gopherdata/gophernotes
#
mkdir -p ~/.local/share/jupyter/kernels/gophernotes
#
cp ./go/src/github.com/gopherdata/gophernotes/kernel/* ~/.local/share/jupyter/kernels/gophernotes
#
vi .local/share/jupyter/kernels/gophernotes/kernel.json 
#
#
diff  .local/share/jupyter/kernels/gophernotes/kernel.json ./go/src/github.com/gopherdata/gophernotes/kernel/kernel.json
#3c3
#               "gophernotes",

Photo by Ben White on Unsplash

Similar Posts You Might Enjoy

Serverless Blog Migration

Heute haben wir den aws-blog.de auf serverless migriert. Dabei haben wir Geschwindigkeit und Stabilität gewonnen! - by Gernot Glawe

Wer ist der Schnellste? Überblick über AWS Ressourcen mit Polyglot Programming.

tl;dr - asynchrone Programmierung ist sehr viel schneller als sequentielle Aufrufe. Insofern stimmt das Pferdebild gar nicht, aber ein einzelnes Pferd sieht halt nicht so spannend aus… Außerdem bin ich selber über die Unterschiede in der Ausführungszeit überrascht… Eine Analyse am Anwendungsfall “wie bekomme ich den Überblick über AWS Resourcen über alle Regionen mit minimaler Ausführungszeit. Am Rennen nehmen teil: node, python und go. Und - um die Aufschreie der jeweiligen Fans vorwegzunehmen - es geht mehr um das Paradigma asynchron als um die Sprache. Ganz nebenbei seht ihr die AWS SDKs im Vergleich! Aber lest selbst - by Gernot Glawe

Stop LLM/GenAI hallucination fast: Serverless Kendra RAG with GO

RAG is a way to approach the “hallucination” problem with LLM: A contextual reference increases the accuracy of the answers. Do you want to use RAG (Retrieval Augmented Generation) in production? The Python langchain library may be too slow for your production services. So what about serverless RAG in fast GO Lambda? - by Gernot Glawe