Berikar nyhetsströmmar i realtid med Refinitiv Data Library, AWS-tjänster och Amazon SageMaker

Berikar nyhetsströmmar i realtid med Refinitiv Data Library, AWS-tjänster och Amazon SageMaker

Det här inlägget är medförfattare av Marios Skevofylakas, Jason Ramchandani och Haykaz Aramyan från Refinitiv, An LSEG Business.

Leverantörer av finansiella tjänster behöver ofta identifiera relevanta nyheter, analysera dem, ta fram insikter och vidta åtgärder i realtid, som att handla med specifika instrument (som råvaror, aktier, fonder) baserat på ytterligare information eller sammanhanget för nyheten. En sådan ytterligare information (som vi använder som exempel i det här inlägget) är känslan av nyheterna.

Refinitiv Data (RD) Libraries tillhandahåller en omfattande uppsättning gränssnitt för enhetlig åtkomst till Refinitiv Data Catalogue. Biblioteket erbjuder flera lager av abstraktion som ger olika stilar och programmeringstekniker lämpliga för alla utvecklare, från låg latens, realtidsåtkomst till batchintag av Refinitiv-data.

I det här inlägget presenterar vi en prototyp AWS-arkitektur som tar in våra nyhetsflöden med hjälp av RD Libraries och förbättrar dem med maskininlärning (ML) modellförutsägelser med hjälp av Amazon SageMaker, en helt hanterad ML-tjänst från AWS.

I ett försök att designa en modulär arkitektur som kan användas i en mängd olika användningsfall, som sentimentanalys, namngiven enhetsigenkänning och mer, oavsett vilken ML-modell som används för förbättring, bestämde vi oss för att fokusera på realtidsutrymmet. Anledningen till detta beslut är att användningsfall i realtid generellt sett är mer komplexa och att samma arkitektur också kan användas, med minimala justeringar, för batch slutledning. I vårt användningsfall implementerar vi en arkitektur som tar in vårt nyhetsflöde i realtid, beräknar sentiment på varje nyhetsrubrik med hjälp av ML och återservar det förbättrade AI-flödet genom en utgivar-/prenumerantarkitektur.

Dessutom, för att presentera ett heltäckande och återanvändbart sätt att producera ML-modeller genom att använda MLOps-praxis, introducerar vi konceptet infrastruktur som kod (IaC) under prototypens hela MLOps-livscykel. Genom att använda Terraform och ett konfigurerbart skript med en enda ingångspunkt kan vi instansiera hela infrastrukturen, i produktionsläge, på AWS på bara några minuter.

I den här lösningen tar vi inte upp MLOps-aspekten av utveckling, utbildning och driftsättning av de individuella modellerna. Om du är intresserad av att lära dig mer om detta, se MLOps grundplan för företag med Amazon SageMaker, som i detalj förklarar ett ramverk för modellbyggande, utbildning och implementering enligt bästa praxis.

Lösningsöversikt

I denna prototyp följer vi en helt automatiserad provisioneringsmetod i enlighet med IaC bästa praxis. IaC är processen att tillhandahålla resurser programmatiskt med hjälp av automatiserade skript snarare än att använda interaktiva konfigurationsverktyg. Resurser kan vara både hårdvara och nödvändig mjukvara. I vårt fall använder vi Terraform för att genomföra implementeringen av en enda konfigurerbar ingångspunkt som automatiskt kan snurra upp hela den infrastruktur vi behöver, inklusive säkerhets- och åtkomstpolicyer, samt automatiserad övervakning. Med denna enda ingångspunkt som utlöser en samling Terraform-skript, ett per tjänst eller resursentitet, kan vi helt automatisera livscykeln för alla eller delar av komponenterna i arkitekturen, vilket gör att vi kan implementera granulär kontroll både på DevOps och MLOps-sidan. Efter att Terraform är korrekt installerat och integrerat med AWS kan vi replikera de flesta operationer som kan göras på AWS-tjänstens instrumentpaneler.

Följande diagram illustrerar vår lösningsarkitektur.

Berikar nyhetsströmmar i realtid med Refinitiv Data Library, AWS-tjänster och Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Arkitekturen består av tre steg: intag, berikning och publicering. Under det första steget intas realtidsflödena på en Amazon Elastic Compute Cloud (Amazon EC2)-instans som skapas genom en Refinitiv Data Library-ready AMI. Instansen ansluter även till en dataström via Amazon Kinesis dataströmmar, som utlöser en AWS Lambda funktion.

I det andra steget ansluter Lambda-funktionen som triggas från Kinesis Data Streams till och skickar nyhetsrubriker till en SageMaker FinBERT endpoint, som returnerar det beräknade sentimentet för nyheten. Detta beräknade sentiment är berikningen av realtidsdata som Lambdafunktionen sedan sveper in nyheten med och lagrar i en Amazon DynamoDB tabell.

I det tredje steget av arkitekturen utlöser en DynamoDB-ström en Lambda-funktion på nya artikelinsatser, som är integrerad med en Amazon MQ-server kör RabbitMQ, som återservar den förbättrade AI-strömmen.

Beslutet om denna trestegskonstruktion, snarare än att det första lambdaskiktet direkt kommunicerar med Amazon MQ-servern eller implementerar mer funktionalitet i EC2-instansen, togs för att möjliggöra utforskning av mer komplexa, mindre kopplade AI-designarkitekturer i framtiden.

Bygga och distribuera prototypen

Vi presenterar denna prototyp i en serie av tre detaljerade ritningar. I varje ritning och för varje tjänst som används, hittar du översikter och relevant information om dess tekniska implementeringar samt Terraform-skript som gör att du automatiskt kan starta, konfigurera och integrera tjänsten med resten av strukturen. I slutet av varje ritning hittar du instruktioner om hur du ser till att allt fungerar som förväntat fram till varje steg. Ritningarna är följande:

För att starta implementeringen av den här prototypen föreslår vi att du skapar en ny Python-miljö dedikerad till den och installerar de nödvändiga paketen och verktygen separat från andra miljöer du kan ha. För att göra det, skapa och aktivera den nya miljön i Anaconda med hjälp av följande kommandon:

conda create —name rd_news_aws_terraform python=3.7
conda activate rd_news_aws_terraform

Vi är nu redo att installera AWS-kommandoradsgränssnitt (AWS CLI) verktygsuppsättning som gör det möjligt för oss att bygga alla nödvändiga programmatiska interaktioner i och mellan AWS-tjänster:

pip install awscli

Nu när AWS CLI är installerat måste vi installera Terraform. HashiCorp förser Terraform med ett binärt installationsprogram, vilket du kan ladda ner och installera.

När du har installerat båda verktygen, se till att de fungerar korrekt med hjälp av följande kommandon:

terraform -help
AWS – version

Du är nu redo att följa de detaljerade ritningarna för vart och ett av de tre stegen i implementeringen.

Denna ritning representerar de inledande stadierna av arkitekturen som gör att vi kan få in nyhetsflöden i realtid. Den består av följande komponenter:

  • Amazon EC2 förbereder din instans för RD News-intag – Det här avsnittet ställer in en EC2-instans på ett sätt som möjliggör anslutning till RD Libraries API och realtidsströmmen. Vi visar också hur man sparar bilden av den skapade instansen för att säkerställa dess återanvändbarhet och skalbarhet.
  • Nyhetsintag i realtid från Amazon EC2 – En detaljerad implementering av de konfigurationer som behövs för att Amazon EC2 ska kunna ansluta RD-biblioteken samt skripten för att starta inmatningen.
  • Skapa och lansera Amazon EC2 från AMI – Starta en ny instans genom att samtidigt överföra inmatningsfiler till den nyskapade instansen, allt automatiskt med Terraform.
  • Skapa en Kinesis-dataström – Det här avsnittet ger en översikt över Kinesis Dataströmmar och hur man ställer in en stream på AWS.
  • Ansluta och skicka data till Kinesis – När intagskoden fungerar måste vi ansluta den och skicka data till en Kinesis-ström.
  • Testar prototypen hittills - Vi använder amazoncloudwatch och kommandoradsverktyg för att verifiera att prototypen fungerar fram till denna punkt och att vi kan fortsätta till nästa ritning. Loggen över intagen data bör se ut som följande skärmdump.

Berikar nyhetsströmmar i realtid med Refinitiv Data Library, AWS-tjänster och Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

I denna andra ritning fokuserar vi på huvuddelen av arkitekturen: Lambdafunktionen som tar in och analyserar nyhetsflödet, kopplar AI-inferensen till den och lagrar den för vidare användning. Den innehåller följande komponenter:

  • Lambda – Definiera en Terraform Lambda-konfiguration så att den kan ansluta till en SageMaker-slutpunkt.
  • Amazon S3 – För att implementera Lambda måste vi ladda upp lämplig kod till Amazon enkel lagringstjänst (Amazon S3) och låt Lambda-funktionen få i sig den i sin miljö. Det här avsnittet beskriver hur vi kan använda Terraform för att åstadkomma det.
  • Implementering av Lambda-funktionen: Steg 1, Hantering av Kinesis-händelsen – I det här avsnittet börjar vi bygga Lambdafunktionen. Här bygger vi endast Kinesis dataströmsvarshanterardelen.
  • SageMaker – I den här prototypen använder vi en förtränad Hugging Face-modell som vi lagrar i en SageMaker-slutpunkt. Här presenterar vi hur detta kan uppnås med Terraform-skript och hur lämpliga integrationer sker för att låta SageMaker-ändpunkter och Lambda-funktioner arbeta tillsammans.
    • Vid det här laget kan du istället använda vilken annan modell som helst som du har utvecklat och distribuerat bakom en SageMaker-slutpunkt. En sådan modell kan ge en annan förbättring av den ursprungliga nyhetsdatan, baserat på dina behov. Alternativt kan detta extrapoleras till flera modeller för flera förbättringar om sådana finns. Tack vare resten av arkitekturen kommer alla sådana modeller att berika dina datakällor i realtid.
  • Bygga Lambda-funktionen: Steg 2, Anropa SageMaker-slutpunkten – I det här avsnittet bygger vi upp vår ursprungliga Lambda-funktion genom att lägga till SageMaker-blocket för att få en nyhetsrubrik förstärkt med känslor genom att anropa SageMaker-slutpunkten.
  • DynamoDB – Slutligen, när AI-inferensen finns i Lambda-funktionens minne, buntar den om objektet och skickar det till en DynamoDB-tabell för lagring. Här diskuterar vi både den lämpliga Python-koden som behövs för att åstadkomma det, såväl som de nödvändiga Terraform-skripten som möjliggör dessa interaktioner.
  • Bygga Lambda-funktionen: Steg 3, Skicka förbättrad data till DynamoDB – Här fortsätter vi att bygga upp vår Lambda-funktion genom att lägga till den sista delen som skapar en post i Dynamo-tabellen.
  • Testar prototypen hittills – Vi kan navigera till DynamoDB-tabellen på DynamoDB-konsolen för att verifiera att våra förbättringar visas i tabellen.

Berikar nyhetsströmmar i realtid med Refinitiv Data Library, AWS-tjänster och Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Denna tredje plan slutför denna prototyp. Den fokuserar på att omfördela den nyskapade, AI-förbättrade dataposten till en RabbitMQ-server i Amazon MQ, så att konsumenter kan ansluta och hämta de förbättrade nyheterna i realtid. Den innehåller följande komponenter:

  • DynamoDB-strömmar – När den förbättrade nyheten finns i DynamoDB ställer vi upp en händelse som utlöses som sedan kan fångas från lämplig Lambda-funktion.
  • Skriver Lambda-producenten – Den här Lambdafunktionen fångar händelsen och fungerar som producent av RabbitMQ-strömmen. Denna nya funktion introducerar konceptet med Lambda-lager eftersom den använder Python-bibliotek för att implementera producentfunktionaliteten.
  • Amazon MQ och RabbitMQ konsumenter – Det sista steget i prototypen är att sätta upp RabbitMQ-tjänsten och implementera en exempelkonsument som kommer att ansluta till meddelandeströmmen och ta emot AI-förbättrade nyheter.
  • Sluttest av prototypen – Vi använder en end-to-end-process för att verifiera att prototypen fungerar fullt ut, från intag till återservering och konsumtion av den nya AI-förbättrade strömmen.

I det här skedet kan du verifiera att allt har fungerat genom att navigera till RabbitMQ-instrumentpanelen, som visas i följande skärmdump.

Berikar nyhetsströmmar i realtid med Refinitiv Data Library, AWS-tjänster och Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

I den slutliga ritningen hittar du också en detaljerad testvektor för att säkerställa att hela arkitekturen beter sig som planerat.

Slutsats

I det här inlägget delade vi en lösning med ML på molnet med AWS-tjänster som SageMaker (ML), Lambda (serverlös) och Kinesis Data Streams (strömning) för att berika strömmande nyhetsdata från Refinitiv Data Libraries. Lösningen lägger till en sentimentpoäng till nyheter i realtid och skalar infrastrukturen med hjälp av kod.

Fördelen med denna modulära arkitektur är att du kan återanvända den med din egen modell för att utföra andra typer av dataförstärkning, på ett serverlöst, skalbart och kostnadseffektivt sätt som kan appliceras ovanpå Refinitiv Data Library. Detta kan ge mervärde för arbetsflöden för handel/investering/riskhantering.

Om du har några kommentarer eller frågor, vänligen lämna dem i kommentarfältet.

Närliggande information


 Om författarna

Berikar nyhetsströmmar i realtid med Refinitiv Data Library, AWS-tjänster och Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Marios Skevofylakas kommer från en bakgrund inom finansiella tjänster, investment banking och konsultteknik. Han har en ingenjörsdoktor. i artificiell intelligens och en M.Sc. i Machine Vision. Under hela sin karriär har han deltagit i ett flertal multidisciplinära AI- och DLT-projekt. Han är för närvarande en Developer Advocate hos Refinitiv, ett LSEG-företag, med fokus på AI och Quantum-applikationer inom finansiella tjänster.

Berikar nyhetsströmmar i realtid med Refinitiv Data Library, AWS-tjänster och Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Jason Ramchandani har arbetat på Refinitiv, en LSEG Business, i 8 år som Lead Developer Advocate och hjälpte till att bygga upp deras utvecklargemenskap. Tidigare har han arbetat på finansmarknaderna i över 15 år med en omfattande bakgrund inom aktie-/aktierelaterade områden på Okasan Securities, Sakura Finance och Jefferies LLC. Hans alma mater är UCL.

Berikar nyhetsströmmar i realtid med Refinitiv Data Library, AWS-tjänster och Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Haykaz Aramyan kommer från en ekonomi- och teknikbakgrund. Han har en Ph.D. i finans och en M.Sc. inom finans, teknik och politik. Genom 10 års yrkeserfarenhet arbetade Haykaz med flera multidisciplinära projekt som involverade pension, VC-fonder och teknikstartups. Han är för närvarande en Developer Advocate hos Refinitiv, An LSEG Business, med fokus på AI-applikationer inom finansiella tjänster.

Berikar nyhetsströmmar i realtid med Refinitiv Data Library, AWS-tjänster och Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Georgios Schinas är Senior Specialist Solutions Architect för AI/ML i EMEA-regionen. Han är baserad i London och arbetar nära kunder i Storbritannien och Irland. Georgios hjälper kunder att designa och distribuera maskininlärningsapplikationer i produktion på AWS med ett särskilt intresse för MLOps-praxis och gör det möjligt för kunder att utföra maskininlärning i stor skala. På fritiden tycker han om att resa, laga mat och umgås med vänner och familj.

Berikar nyhetsströmmar i realtid med Refinitiv Data Library, AWS-tjänster och Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Muthuvelan Swaminathan är en Enterprise Solutions Architect baserad i New York. Han arbetar med företagskunder som tillhandahåller arkitektonisk vägledning för att bygga motståndskraftiga, kostnadseffektiva, innovativa lösningar som möter deras affärsbehov och hjälper dem att utföra i stor skala med hjälp av AWS-produkter och tjänster.

Berikar nyhetsströmmar i realtid med Refinitiv Data Library, AWS-tjänster och Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Mayur Udernani leder AWS AI & ML-verksamhet med kommersiella företag i Storbritannien och Irland. I sin roll tillbringar Mayur större delen av sin tid med kunder och partners för att hjälpa till att skapa effektfulla lösningar som löser de mest pressande behoven hos en kund eller för en bredare industri som utnyttjar AWS Cloud, AI & ML-tjänster. Mayur bor i Londonområdet. Han har en MBA från Indian Institute of Management och kandidatexamen i datateknik från Mumbai University.

Tidsstämpel:

Mer från AWS maskininlärning