Was hat es damit auf sich?
Vor 6 Mona­ten hat Ope­nAI ChatGPT ver­öf­fent­licht, ein neues Sprach­mo­dell, das eine ver­bes­serte Ver­sion von GPT‑3 ist und uns mög­li­cher­weise einen Aus­blick dar­auf gibt, wozu GPT‑4 fähig sein wird, wenn es Anfang nächs­ten Jah­res ver­öf­fent­licht wird (wie gemun­kelt wird). Mit ChatGPT ist es mög­lich, sich mit dem Modell zu unter­hal­ten und dabei auf frü­here Punkte in der Unter­hal­tung zurückzugreifen.

Ich wollte aus­pro­bie­ren, ob ich die­ses Modell als Paar­pro­gram­mie­rer ver­wen­den kann, d. h. ich kann ihm einige Anwei­sun­gen geben, und es erstellt den Code für mich. Ich würde diese Code­schnip­sel natür­lich immer noch dop­pelt über­prü­fen, aber zumin­dest müsste ich sie nicht mehr von Grund auf neu schreiben.

In die­sem Blog­bei­trag beschreibe ich, wie ich ChatGPT ver­wen­det habe, um eine ein­fa­che Anwen­dung zur Stim­mungs­ana­lyse von Grund auf zu erstel­len. Die Anwen­dung sollte auf einer EC2-Instanz lau­fen und ein moder­nes NLP-Modell aus dem Hug­ging Face Model Hub ver­wen­den. Die Ergeb­nisse waren verblüffend!

Dis­clai­mer: Ich musste einige Male ver­su­chen, die Ein­ga­be­auf­for­de­run­gen zu ver­fei­nern, um die gewünsch­ten Ergeb­nisse zu erzie­len. Aller­dings waren in der Regel nur gering­fü­gige Ver­fei­ne­run­gen erfor­der­lich, um die gewünsch­ten Ergeb­nisse zu erzie­len. Meine Prompts und der vom Modell gene­rierte Code sind in die­sem Git­Hub Repo zu finden.

Los geht’s
Ok, fan­gen wir an! Prü­fen wir zunächst, ob ChatGPT bereit ist zu helfen:

Ok, das ist ein viel­ver­spre­chen­der Anfang. Las­sen Sie uns in die Details ein­tau­chen, wie von unse­rem Beglei­ter gewünscht!

Erstel­len einer Cloud­For­ma­tion-Vor­lage für die EC2-Instanz
Wir wol­len diese Anwen­dung auf einer EC2-Instanz lau­fen las­sen, aber wir wol­len uns nicht durch die AWS-Kon­sole kli­cken, um diese EC2-Instanz zu erstel­len. Daher besteht unsere erste Auf­gabe für ChatGPT darin, eine Cloud­For­ma­tion-Vor­lage zu erstel­len, die die EC2-Instanz einrichtet:

Die Anwei­sun­gen sind ziem­lich spe­zi­fisch (ich musste z. B. die AMI-ID selbst nach­schla­gen), aber den­noch war ich ziem­lich über­rascht, dass eine fast per­fekte CF-Vor­lage her­aus­kam. Beach­ten Sie, dass ChatGPT auch einige Haf­tungs­aus­schlüsse am Ende des Codes setzt:

Der gesamte von ChatGPT erzeugte Code:

AWSTemplateFormatVersion: '2010-09-09'
Description: A simple CloudFormation template for creating a security group and launching an EC2 instance

Resources:
  SecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupName: chatgpt-demo-sg
      GroupDescription: Security group for chatgpt-demo EC2 instance
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 22
          ToPort: 22
          CidrIp: 0.0.0.0/0
        - IpProtocol: tcp
          FromPort: 8501
          ToPort: 8501
          CidrIp: 0.0.0.0/0

  EC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: g4dn.xlarge
      ImageId: ami-09f85944838b438c5
      SecurityGroups:
        - Ref: SecurityGroup
      UserData:
        'Fn::Base64': |
          #!/bin/bash
          # Activate the pre-built pytorch environment
          source activate pytorch_p36

          # Install the libraries "transformers" and "streamlit" via pip
          pip install transformers streamlit

Beach­ten Sie, dass die EC2-Instanz nicht den Namen erhält, den wir in der Ein­ga­be­auf­for­de­rung ange­ge­ben haben. Aber gut, damit kön­nen wir erst ein­mal leben. Ein wei­te­rer „Feh­ler“ in die­ser Vor­lage ist, dass die vor­in­stal­lierte Pytorch-Umge­bung auf dem AMI „pytorch“ und nicht „pytorch_36“ heißt. Wir behe­ben das, indem wir den Umge­bungs­na­men ersetzen.

Wie füh­ren wir dies nun tat­säch­lich aus? Fra­gen wir ChatGPT:

Ok, mit die­ser Zeile wurde die Sta­cker­stel­lung mit der CF-Vor­lage gestar­tet. Nach ein paar Minu­ten sehen wir, dass die EC2-Instanz betriebs­be­reit ist. Beach­ten Sie, dass die Vor­lage eine Sicher­heits­gruppe erstellt hat und die EC2-Instanz diese Sicher­heits­gruppe wie ange­ge­ben verwendet:

Außer­dem soll­ten wir uns per SSH in die EC2-Instanz ein­log­gen, um zu sehen, ob die benö­tig­ten Pakete instal­liert sind:

Sieht aus, als wäre alles für die Stream­lit-Anwen­dung vorbereitet 😊.

Stream­lit-Anwen­dung
Jetzt brau­chen wir eine Anwen­dung, die auf Stream­lit läuft und die Stim­mung des Tex­tes ana­ly­siert. Zu mei­ner Über­ra­schung war das sogar ein­fa­cher, als ich erwar­tet hatte:

Auch hier ein net­ter Dis­clai­mer am Ende.

Der gesamte Code:

import streamlit as st
from transformers import pipeline

# Set the title of the application
st.title("A sentiment analyser written by ChatGPT")

# Create the input text field
text = st.text_input("Enter some text to analyse:")

# Use the Hugging Face Pipeline API to create a sentiment classifier
sentiment_classifier = pipeline("text-classification", model="distilbert-base-uncased-finetuned-sst-2-english")

# Evaluate the text entered by the user and display the result
if text:
    result = sentiment_classifier(text)[0]
    st.write(f"Predicted sentiment: {result['label']}")

Für mich sieht das eigent­lich gut aus. Ver­su­chen wir mal, das ohne Ände­run­gen aus­zu­füh­ren. Kopie­ren Sie die­sen Code und fügen Sie ihn in eine Datei auf EC2 namens „app.py“ ein. Aber wie kön­nen wir Stream­lit-Apps wie­der aus­füh­ren? Fra­gen wir doch mal unse­ren „Kol­le­gen“:

Wir haben Stream­lit bereits instal­liert, also füh­ren wir „stream­lit run app.py“ aus:

Scheint alles gut zu sein!

Tes­ten der Anwen­dung
Jetzt kommt der Moment der Wahr­heit. Wir schlie­ßen die URL stream­lit an und sehen, ob die Anwen­dung läuft.

Wow, ChatGPT hat gerade eine ganze Text-Sen­ti­ment-App nur mit unse­rer Anlei­tung gebaut 🤯

Fazit
Ich bin wirk­lich sprach­los. Das hat so viel Spaß gemacht und die Mög­lich­kei­ten sind end­los. Ich werde ver­su­chen, in Zukunft mehr mit die­sem Modell zu expe­ri­men­tie­ren und würde auch gerne hören, was Sie damit gebaut haben. 

Quelle: towardsdatascience.com

Erfah­ren Sie hier mehr über Lösun­gen im Bereich Data Engi­nee­ring oder besu­chen Sie eines unse­rer kos­ten­lo­sen Web­i­nare.