A GPT-NeoXT-Chat-Base-20B alapmodell chatbot-alkalmazásokhoz már elérhető az Amazon SageMakeren | Amazon webszolgáltatások

A GPT-NeoXT-Chat-Base-20B alapmodell chatbot-alkalmazásokhoz már elérhető az Amazon SageMakeren | Amazon webszolgáltatások

Ma örömmel jelentjük be, hogy a Together Computer GPT-NeoXT-Chat-Base-20B nyelvi alapmodellje elérhető az ügyfelek számára Amazon SageMaker JumpStart. A GPT-NeoXT-Chat-Base-20B egy nyílt forráskódú modell társalgási botok készítésére. Könnyedén kipróbálhatja ezt a modellt és használhatja a JumpStart segítségével. A JumpStart a gépi tanulási (ML) központja Amazon SageMaker amely hozzáférést biztosít az alapmodellekhez a beépített algoritmusok és a végpontok közötti megoldássablonok mellett, hogy segítsen gyorsan elkezdeni az ML-t.

Ebben a bejegyzésben bemutatjuk, hogyan kell telepíteni a GPT-NeoXT-Chat-Base-20B modellt, és meghívja a modellt egy OpenChatKit interaktív héj. Ez a bemutató egy nyílt forráskódú alapozó modell chatbotot kínál az alkalmazáson belüli használatra.

A JumpStart modellek Deep Java Serving-t használnak, amely a Deep Java Library-t (DJL) használja mély sebességű könyvtárakkal a modellek optimalizálása és a következtetések késésének minimalizálása érdekében. A JumpStart mögöttes megvalósítás a következőhöz hasonló megvalósítást követ jegyzetfüzet. JumpStart modellközpont-ügyfélként jobb teljesítményt érhet el anélkül, hogy a SageMaker SDK-n kívül kellene karbantartania a modellszkriptet. A JumpStart modellek a hálózat elkülönítését lehetővé tevő végpontokkal is javított biztonsági helyzetet érnek el.

Alapozó modellek a SageMakerben

A JumpStart hozzáférést biztosít a népszerű modellközpontok számos modelljéhez, beleértve a Hugging Face-t, a PyTorch Hub-ot és a TensorFlow Hub-ot, amelyeket a SageMaker ML-fejlesztési munkafolyamataiban használhat fel. Az ML közelmúltbeli fejlődése a modellek új osztályát eredményezte alapozó modellek, amelyek jellemzően több milliárd paraméterre vannak kiképezve, és a felhasználási esetek széles kategóriájához adaptálhatók, mint például a szövegösszegzés, a digitális művészet generálása és a nyelvi fordítás. Mivel ezeknek a modelleknek a betanítása költséges, az ügyfelek a meglévő, előre betanított alapozómodelleket szeretnék használni, és szükség szerint finomhangolni őket, ahelyett, hogy maguk képeznék ki ezeket a modelleket. A SageMaker a modellek válogatott listáját kínálja, amelyek közül választhat a SageMaker konzolon.

Mostantól különböző modellszolgáltatók alapozómodelljeit találhatja meg a JumpStartban, így gyorsan elkezdheti az alapozó modelleket. Különböző feladatokon vagy modellszolgáltatókon alapuló alapmodelleket találhat, és könnyen áttekintheti a modell jellemzőit és használati feltételeit. Ezeket a modelleket egy teszt UI widget segítségével is kipróbálhatja. Ha nagyszabású alapmodellt szeretne használni, ezt egyszerűen megteheti anélkül, hogy elhagyná a SageMakert a modellszolgáltatók előre elkészített notebookjainak használatával. Mivel a modelleket az AWS-en tárolják és telepítik, biztos lehet benne, hogy adatait – akár a modell kiértékeléséhez, akár nagyszabású használatához használják – soha nem osztják meg harmadik felekkel.

GPT-NeoXT-Chat-Base-20B alapozó modell

Együtt számítógép kifejlesztette a GPT-NeoXT-Chat-Base-20B-t, egy 20 milliárd paraméteres nyelvi modellt, amelyet az ElutherAI GPT-NeoX modelljére finomítottak, több mint 40 millió utasítással, a párbeszéd-stílusú interakciókra összpontosítva. Ezenkívül a modell számos feladatra hangolódik, mint például a kérdés megválaszolása, osztályozása, kinyerése és összegzése. A modell az OIG-43M adatkészleten alapul, amelyet a LAION és az Ontocord együttműködésével hoztak létre.

A fent említett finomhangoláson kívül a GPT-NeoXT-Chat-Base-20B-v0.16 további finomhangoláson is átesett, kis mennyiségű visszacsatolási adat révén. Ez lehetővé teszi, hogy a modell jobban alkalmazkodjon az emberi preferenciákhoz a beszélgetésekben. A GPT-NeoXT-Chat-Base-20B chatbot-alkalmazásokban való használatra készült, és előfordulhat, hogy a tervezett hatókörön kívül más felhasználási esetekben nem teljesít jól. Az Ontocord és a LAION közösen kiadták az OpenChatKit, a ChatGPT nyílt forráskódú alternatíváját, hasonló képességekkel. Az OpenChatKit Apache-2.0 licenc alatt indult, teljes hozzáférést biztosítva a forráskódhoz, a modellsúlyokhoz és a képzési adatkészletekhez. Számos olyan feladat van, amelyekben az OpenChatKit már eleve kiválóan teljesít. Ide tartoznak az összegzési feladatok, a kivonatolási feladatok, amelyek lehetővé teszik a strukturált információk strukturálatlan dokumentumokból való kinyerését, valamint az osztályozási feladatok egy mondat vagy bekezdés különböző kategóriákba sorolásához.

Fedezzük fel, hogyan használhatjuk a GPT-NeoXT-Chat-Base-20B modellt a JumpStartban.

Megoldás áttekintése

A következőben megtalálhatja a GPT-NeoXT-Chat-Base-20B telepítését bemutató kódot a SageMaker-en, valamint egy példát a telepített modell párbeszédes használatára a parancshéj használatával. GitHub notebook.

A következő szakaszokban részletesen kibővítjük az egyes lépéseket a modell üzembe helyezéséhez, majd a különböző feladatok megoldásához:

  1. Állítsa be az előfeltételeket.
  2. Válasszon egy előre betanított modellt.
  3. Lekérheti a műtermékeket, és telepíthet egy végpontot.
  4. Kérdezze le a végpontot, és elemezze a választ.
  5. Használjon OpenChatKit rendszerhéjat a telepített végponttal való interakcióhoz.

Állítsa be az előfeltételeket

Ezt a notebookot egy ml.t3.medium példányon tesztelték Amazon SageMaker Studio a Python 3 (Data Science) kernellel és egy SageMaker notebook példányban a conda_python3 kernellel.

A notebook futtatása előtt használja a következő parancsot a beállításhoz szükséges kezdeti lépések végrehajtásához:

%pip install --upgrade sagemaker –quiet

Válasszon egy előre betanított modellt

A szokásos módon beállítunk egy SageMaker munkamenetet a Boto3 használatával, majd kiválasztjuk a telepíteni kívánt modellazonosítót:

model_id, model_version = "huggingface-textgeneration2-gpt-neoxt-chat-base-20b-fp16", "*"

Lekérheti a műtermékeket, és telepíthet egy végpontot

A SageMaker segítségével az előre betanított modellen következtetést tudunk levonni anélkül, hogy először finomhangolnánk egy új adatkészleten. Kezdjük azzal, hogy lekérjük a instance_type, image_uriés model_uri az előre betanított modell számára. Az előre betanított modell hosztolásához létrehozunk egy példányt sagemaker.model.Model és telepítse azt. A következő kód az ml.g5.24xlarge kódot használja a következtetési végponthoz. A telepítési módszer eltarthat néhány percig.

endpoint_name = name_from_base(f"jumpstart-example-{model_id}") # Retrieve the inference instance type for the specified model.
instance_type = instance_types.retrieve_default( model_id=model_id, model_version=model_version, scope="inference"
) # Retrieve the inference docker container uri.
image_uri = image_uris.retrieve( region=None, framework=None, image_scope="inference", model_id=model_id, model_version=model_version, instance_type=instance_type,
) # Retrieve the model uri.
model_uri = model_uris.retrieve( model_id=model_id, model_version=model_version, model_scope="inference"
) # Create the SageMaker model instance. The inference script is prepacked with the model artifact.
model = Model( image_uri=image_uri, model_data=model_uri, role=aws_role, predictor_cls=Predictor, name=endpoint_name,
) # Set the serializer/deserializer used to run inference through the sagemaker API.
serializer = JSONSerializer()
deserializer = JSONDeserializer() # Deploy the Model.
predictor = model.deploy( initial_instance_count=1, instance_type=instance_type, predictor_cls=Predictor, endpoint_name=endpoint_name, serializer=serializer, deserializer=deserializer
)

Kérdezze le a végpontot, és elemezze a választ

Ezután egy példát mutatunk be, hogyan hívhatunk meg egy végpontot a hiperparaméterek részhalmazával:

payload = { "text_inputs": "<human>: Tell me the steps to make a pizzan<bot>:", "max_length": 500, "max_time": 50, "top_k": 50, "top_p": 0.95, "do_sample": True, "stopping_criteria": ["<human>"],
}
response = predictor.predict(payload)
print(response[0][0]["generated_text"])

A következő választ kapjuk:

<human>: Tell me the steps to make a pizza
<bot>: 1. Choose your desired crust, such as thin-crust or deep-dish. 2. Preheat the oven to the desired temperature. 3. Spread sauce, such as tomato or garlic, over the crust. 4. Add your desired topping, such as pepperoni, mushrooms, or olives. 5. Add your favorite cheese, such as mozzarella, Parmesan, or Asiago. 6. Bake the pizza according to the recipe instructions. 7. Allow the pizza to cool slightly before slicing and serving.
<human>:

Itt megadtuk a hasznos terhelés argumentumot "stopping_criteria": ["<human>"], ami azt eredményezte, hogy a modellválasz a szósorozat generálásával végződik <human>. A JumpStart modellszkript bármilyen karakterlánc-listát elfogad kívánt stopszóként, konvertálja ezt a listát érvényessé stopping_criteria kulcsszó argumentum A transzformátorok API-t generálnak, és leállítják a szöveggenerálást, ha a kimeneti szekvencia bármely megadott stopszót tartalmaz. Ez két okból hasznos: egyrészt csökken a következtetési idő, mivel a végpont nem generál tovább nem kívánt szöveget a stopszavakon túl, másrészt ez megakadályozza, hogy az OpenChatKit modell további emberi és bot válaszokat hallucináljon, amíg a többi leállítási kritérium teljesül. .

Használjon OpenChatKit rendszerhéjat a telepített végponttal való interakcióhoz

Az OpenChatKit parancssori shellt biztosít a chatbottal való interakcióhoz. Ebben a lépésben létrehozza a shell egy olyan verzióját, amely kölcsönhatásba léphet a telepített végponttal. Az OpenChatKit adattárban található következtetési szkriptek egyszerű egyszerűsítését biztosítjuk, amelyek kölcsönhatásba léphetnek a telepített SageMaker-végpontunkkal.

Ennek két fő összetevője van:

  • Egy shell interpreter (JumpStartOpenChatKitShell), amely lehetővé teszi a modell végpontjának iteratív következtetési meghívását
  • Egy beszélgetési objektum (Conversation), amely a korábbi emberi/chatbot interakciókat helyben tárolja az interaktív shellben, és megfelelően formázza a múltbeli beszélgetéseket a jövőbeli következtetési kontextushoz

A Conversation Az objektum úgy importálódik, ahogy van az OpenChatKit lerakatból. A következő kód egyéni shell-értelmezést hoz létre, amely kölcsönhatásba léphet a végponttal. Ez az OpenChatKit megvalósítás egyszerűsített változata. Javasoljuk, hogy fedezze fel az OpenChatKit adattárat, hogy megtudja, hogyan használhat mélyebb szolgáltatásokat, mint például a token streaming, a moderálási modellek és a visszakeresés kiterjesztett generálása ebben az összefüggésben. A jegyzetfüzet kontextusa egy minimális életképes chatbot bemutatására összpontosít egy JumpStart végponttal; innen szükség szerint bonyolultabbá teheti.

Egy rövid bemutató a JumpStartOpenChatKitShell a következő videóban látható.

A következő részlet bemutatja a kód működését:

class JumpStartOpenChatKitShell(cmd.Cmd): intro = ( "Welcome to the OpenChatKit chatbot shell, modified to use a SageMaker JumpStart endpoint! Type /help or /? to " "list commands. For example, type /quit to exit shell.n" ) prompt = ">>> " human_id = "<human>" bot_id = "<bot>" def __init__(self, predictor: Predictor, cmd_queue: Optional[List[str]] = None, **kwargs): super().__init__() self.predictor = predictor self.payload_kwargs = kwargs self.payload_kwargs["stopping_criteria"] = [self.human_id] if cmd_queue is not None: self.cmdqueue = cmd_queue def preloop(self): self.conversation = Conversation(self.human_id, self.bot_id) def precmd(self, line): command = line[1:] if line.startswith('/') else 'say ' + line return command def do_say(self, arg): self.conversation.push_human_turn(arg) prompt = self.conversation.get_raw_prompt() payload = {"text_inputs": prompt, **self.payload_kwargs} response = self.predictor.predict(payload) output = response[0][0]["generated_text"][len(prompt):] self.conversation.push_model_response(output) print(self.conversation.get_last_turn()) def do_reset(self, arg): self.conversation = Conversation(self.human_id, self.bot_id) def do_hyperparameters(self, arg): print(f"Hyperparameters: {self.payload_kwargs}n") def do_quit(self, arg): return True

Most elindíthatja ezt a shellt parancshurokként. Ez ismételten felszólítást ad ki, elfogadja a bevitelt, elemzi a beviteli parancsot, és elküldi a műveleteket. Mivel az eredményül kapott shell egy végtelen ciklusban használható, ez a notebook alapértelmezett parancssort biztosít (cmdqueue) a bemeneti sorok sorban álló listájaként. Mert az utolsó bemenet a parancs /quit, a parancsértelmező kilép a sor kimerülése után. A csevegőbottal való dinamikus interakcióhoz távolítsa el a cmdqueue.

cmd_queue = [ "Hello!",
]
JumpStartOpenChatKitShell( endpoint_name=endpoint_name, cmd_queue=cmd_queue, max_new_tokens=128, do_sample=True, temperature=0.6, top_k=40,
).cmdloop()

1. példa: A beszélgetés kontextusa megmarad

A következő prompt azt mutatja, hogy a chatbot képes megőrizni a beszélgetés kontextusát, hogy válaszoljon a további kérdésekre:

Welcome to the OpenChatKit chatbot shell, modified to use a SageMaker JumpStart endpoint! Type /help or /? to list commands. For example, type /quit to exit shell. <<< Hello! How may I help you today? >>> What is the capital of US? <<< The capital of US is Washington, D.C. >>> How far it is from PA ? <<< It is approximately 1100 miles.

2. példa: Az érzelmek osztályozása

A következő példában a chatbot osztályozási feladatot hajtott végre a mondat érzéseinek azonosításával. Mint látható, a chatbot sikeresen osztályozta a pozitív és negatív érzelmeket.

Welcome to the OpenChatKit chatbot shell, modified to use a SageMaker JumpStart endpoint! Type /help or /? to list commands. For example, type /quit to exit shell. <<< Hello! How may I help you today? >>> What is the sentiment of this sentence "The weather is good and I am going to play outside, it is sunny and warm" <<< POSITIVE >>> What is the sentiment of this sentence " The news this morning was tragic and it created lot of fear and concerns in city" <<< NEGATIVE

3. példa: Összegzési feladatok

Ezután a chatbot shell-jével próbáltuk ki az összegzési feladatokat. A következő példa bemutatja, hogy a hosszú szöveg kb Amazon Comprehend egy mondatban volt összefoglalva, és a chatbot képes volt válaszolni a szöveggel kapcsolatos további kérdésekre:

Welcome to the OpenChatKit chatbot shell, modified to use a SageMaker JumpStart endpoint! Type /help or /? to list commands. For example, type /quit to exit shell. <<< Hello! How may I help you today? >>> Write a short summary for this text: Amazon Comprehend uses natural language processing (NLP) to extract insights about the content of documents. It develops insights by recognizing the entities, key phrases, language, sentiments, and other common elements in a document. Use Amazon Comprehend to create new products based on understanding the structure of documents. For example, using Amazon Comprehend you can search social networking feeds for mentions of products or scan an entire document repository for key phrases. nYou can access Amazon Comprehend document analysis capabilities using the Amazon Comprehend console or using the Amazon Comprehend APIs. You can run real-time analysis for small workloads or you can start asynchronous analysis jobs for large document sets. You can use the pre-trained models that Amazon Comprehend provides, or you can train your own custom models for classification and entity recognition. nAll of the Amazon Comprehend features accept UTF-8 text documents as the input. In addition, custom classification and custom entity recognition accept image files, PDF files, and Word files as input. nAmazon Comprehend can examine and analyze documents in a variety of languages, depending on the specific feature. For more information, see Languages supported in Amazon Comprehend. Amazon Comprehend's Dominant language capability can examine documents and determine the dominant language for a far wider selection of languages. <<< Amazon Comprehend is a natural language processing (NLP) service that uses deep learning and other advanced AI techniques to extract insights from unstructured text. >>> What kind of files does custom entity recognition accept as inputs? <<< Image files, PDF files, and Word files

4. példa: Strukturált információk kinyerése strukturálatlan szövegből

A következő példában a chatbot segítségével létrehoztunk egy fejléceket, sorokat és oszlopokat tartalmazó leértékelési táblázatot, hogy a szabad formátumú információk felhasználásával projekttervet hozzunk létre:

Welcome to the OpenChatKit chatbot shell, modified to use a SageMaker JumpStart endpoint! Type /help or /? to list commands. For example, type /quit to exit shell. <<< Hello! How may I help you today? >>> Generate a table summarizing the options outlined in this email. Team, we need to plan a project. The first task is for creating a web app and will take 3 developers, 2 testers with duration of 3 weeks. This is priority 1 The second task is for refactoring a web app and will take 2 developers, 5 testers with duration of 4 weeks. This is priority 2 A markdown table with 2 rows and six columns: (1) Task ID , (2) Task Description, (3) Developers, (4) Testers, (5) Duration, (6) Priority <<< | Task ID | Task Description | Developers | Testers | Duration | Priority |
| --------- | --------- | --------- | --------- | --------- | --------- |
| 1 | Create a web app | 3 | 2 | 3 weeks | 1 |
| 2 | Refactor a web app | 2 | 5 | 4 weeks | 2 |

5. példa: Parancsok a chatbot bemeneteként

Bemenetet is biztosíthatunk parancsként, mint pl /hyperparameters a hiperparaméterek értékeinek megtekintéséhez és /quit a parancshéjból való kilépéshez:

>>> /hyperparameters <<< Hyperparameters: {'max_new_tokens': 128, 'do_sample': True, 'temperature': 0.6, 'top_k': 40, 'stopping_criteria': ['<human>']} >>> /quit

Ezek a példák csak néhány olyan feladatot mutattak be, amelyekben az OpenChatKit kiváló. Javasoljuk, hogy próbáljon ki különféle utasításokat, és nézze meg, melyik a legmegfelelőbb az Ön használati esetéhez.

Tisztítsuk meg

A végpont tesztelése után mindenképpen törölje a SageMaker következtetési végpontot és a modellt, hogy elkerülje a költségeket.

Következtetés

Ebben a bejegyzésben megmutattuk, hogyan tesztelheti és használhatja a GPT-NeoXT-Chat-Base-20B modellt a SageMaker segítségével, és hogyan készíthet érdekes chatbot alkalmazásokat. Próbálja ki a SageMaker alapozó modelljét még ma, és ossza meg velünk visszajelzését!

Ez az útmutató csak tájékoztató jellegű. Ennek ellenére el kell végeznie a saját független értékelését, és meg kell tennie az intézkedéseket annak biztosítására, hogy megfeleljen saját minőség-ellenőrzési gyakorlatának és szabványainak, valamint az Önre, a tartalmaira és a tartalmaira vonatkozó helyi szabályoknak, törvényeknek, rendeleteknek, licenceknek és használati feltételeknek. az ebben az útmutatóban hivatkozott harmadik fél modellje. Az AWS-nek nincs ellenőrzése vagy felhatalmazása az ebben az útmutatóban hivatkozott harmadik féltől származó modellre, és nem vállal semmilyen kijelentést vagy garanciát arra vonatkozóan, hogy a harmadik féltől származó modell biztonságos, vírusmentes, működőképes vagy kompatibilis az Ön éles környezetével és szabványaival. Az AWS nem vállal semmilyen kijelentést, garanciát vagy garanciát arra vonatkozóan, hogy az ebben az útmutatóban szereplő információk egy adott eredményt vagy eredményt eredményeznek.


A szerzőkről

GPT-NeoXT-Chat-Base-20B foundation model for chatbot applications is now available on Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Rachna Chadha az AWS stratégiai számláinak fő megoldási építésze AI/ML. Rachna optimista, aki hisz abban, hogy az AI etikus és felelős használata javíthatja a társadalmat a jövőben, és gazdasági és társadalmi jólétet hozhat. Szabadidejében Rachna szereti a családjával tölteni az idejét, kirándulni és zenét hallgatni.

GPT-NeoXT-Chat-Base-20B foundation model for chatbot applications is now available on Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Dr. Kyle Ulrich egy alkalmazott tudós a Amazon SageMaker beépített algoritmusok csapat. Kutatási területei közé tartoznak a skálázható gépi tanulási algoritmusok, a számítógépes látás, az idősorok, a Bayes-féle nem-paraméterek és a Gauss-folyamatok. Doktori fokozatát a Duke Egyetemen szerezte, és publikációkat publikált a NeurIPS-ben, a Cell-ben és a Neuron-ban.

GPT-NeoXT-Chat-Base-20B foundation model for chatbot applications is now available on Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Dr. Ashish Khetan vezető alkalmazott tudós az Amazon SageMaker beépített algoritmusaival, és segít gépi tanulási algoritmusok fejlesztésében. PhD fokozatát az Illinois Urbana-Champaign Egyetemen szerezte. A gépi tanulás és a statisztikai következtetések aktív kutatója, és számos közleményt publikált NeurIPS, ICML, ICLR, JMLR, ACL és EMNLP konferenciákon.

Időbélyeg:

Még több AWS gépi tanulás