Jos haluat rakentaa tekoälyratkaisuja AWS:lle, kannattaa harkita Bedrockia. Se on täynnä älykkäitä ominaisuuksia, jotka toimivat sujuvasti yhteen muun AWS-ekosysteemin kanssa ja säästävät aikaa, pienentävät riskejä sekä vähentävät vaivaa.
Juri Ahokas
Head of Partner Business Lead
Juri hat über 20 Jahre Erfahrung in den Bereichen SysOps, DevOps und Produktentwicklung. Er ist ein AWS-zertifizierter Lösungsarchitekt, der davon überzeugt ist, dass die besten Lösungen aus dem Verständnis der Bedürfnisse des Kunden entstehen.
Tässä blogikirjoituksessa opit alkuun pääsemiseksi tarvittavat perusteet, kuten:
Mitä se tekee.
Miten se sopii yhteen muiden AWS-työkalujen kanssa.
Keskeiset käsitteet ja ominaisuudet, joihin se perustuu ja joita se hyödyntää.
Miten APIa käytetään.
Miten hinnoittelu toimii.
Lyhyt katsaus tämän sarjan edelliseen blogikirjoitukseen
Tämän AWS-palveluilla toteutettavaa tekoälyä käsittelevän sarjan ensimmäisessä blogikirjoituksessa tarkastelin kriittisiä virheitä, joita kannattaa välttää rakennettaessa tekoälyratkaisuja AWS:ssä. Keskeiset suositukseni tekoälyratkaisujen onnistuneeseen käyttöönottoon olivat:
Määritä selkeä tekoälystrategia.
Ota käyttöön kattava datanhallintasuunnitelma.
Optimoi kustannukset tehokkaasti.
Keskity tekoälyn hyötyihin liittyviin mittareihin.
Määrittelin myös lyhyesti AWS:n tärkeimpien tekoälypalvelujen kolme eri tasoa: Amazon Q, AWS Bedrock ja AWS Sagemaker. Vaikka keskitymme tässä blogikirjoituksessa AWS Bedrockiin, voi olla hyödyllistä palata aiempaan blogikirjoitukseen kertaamaan kaksi muuta yhdessä toimivaa työkalua.
Mitä AWS Bedrock tekee
AWS Bedrock tarjoaa rakennuspalikat loistavien tekoälytyökalujen luomiseen. Saat automaattisesti käyttöösi laajan valikoiman tekoälymalleja – osa on tarkoitettu kielelle ja osa kuville sekä grafiikalle. Tämä on erinomaista, sillä et ole sidottu yhteen malliin, vaan voit valita tarpeisiisi ja budjettiisi parhaiten sopivan vaihtoehdon.
Bedrockia käytetään pääasiassa APIen kautta, mutta siinä on myös kätevä sandbox-käyttöliittymä, jonka avulla pääset alkuun. Tarkastelemme myöhemmin lähemmin käsitteitä ja ominaisuuksia, jotka tekevät tämän mahdolliseksi, mukaan lukien Bedrock Studio. Sen avulla kehittäjät ja data-analyytikot voivat visualisoida, testata ja muokata tekoälysovelluksia ilman, että heidän tarvitsee sukeltaa suoraan koodiin tai APIen pariin.
Miten AWS Bedrock erottuu AWS:n tekoälykentässä
AWS:n tekoälypalveluissa yksi Bedrockin tausta-ajatuksista on, että "yksi malli ei hallitse kaikkea".
Kehittäjille Bedrock tarjoaa yhden mallin sijaan API-first-lähestymistapansa kautta pääsyn laajaan valikoimaan perusmalleja. Tämä antaa joustavuutta vastata erilaisiin tarpeisiin.
Voit löytää käyttötapaukseesi täydellisesti ja tehokkaimmin sopivan vaihtoehdon ilman palvelinten ylläpidon kuormaa, sillä Bedrock on serverless. Lisäksi AWS julkaisi juuri esiversion uudesta Bedrock-ominaisuudesta, jonka avulla voit tuoda malleja Bedrockiin.
Keskeiset käsitteet, jotka sinun on hallittava Bedrockin käytössä
Perusmallit (FM:t)
Bedrockissa on laaja kokoelma valmiiksi koulutettuja perusmalleja (FM) erilaisiin luonnollisen kielen käsittelyn (NLP) ja koneoppimisen (ML) tehtäviin. Mallit sisältävät suuria kielimalleja (LLM) ja multimodaalisia malleja – kaikki eri käyttötarkoituksiin suunniteltuja.
Nämä FM:t voivat suorittaa monenlaisia tehtäviä, kuten:
Blogikirjoitusten kirjoittaminen.
Asiakirjojen tiivistäminen.
Päättelyä vaativien ongelmien ratkaiseminen.
Keskustelu.
Kysymyksiin vastaaminen.
Ja jopa musiikin ja runouden säveltäminen.
Jotkin LLM-mallit, kuten Metan Llama 3 ja AWS:n Titan Text G1, ovat erikoistuneet tekstipohjaisiin tehtäviin. Ne ymmärtävät ja tuottavat ihmismäistä tekstiä, joten ne soveltuvat kielten kääntämiseen, tekstien tiivistämiseen ja sisällöntuotantoon. FM-malliperheistä on usein eri versioita, jotka on optimoitu tiettyihin tehtäviin, kuten tiivistämiseen, keskusteluun tai nopeaan vastaamiseen.
Multimodaaliset mallit, kuten Anthropicin Claude 3.5, käsittelevät useita syötetyyppejä, kuten tekstiä, kuvia ja ääntä. Tämä tarkoittaa, että ne voivat ratkaista tehtäviä, joissa käsitellään samanaikaisesti useita datatyyppejä.
Koska Bedrockin FM-mallit vaihtelevat suuresti, voit kehittäjänä valita juuri omaan käyttötapaukseesi sopivimman mallin – olipa kyse pelkästään tekstistä tai multimodaalisia ominaisuuksia vaativasta tehtävästä.
Voit käyttää FM-malleja monenlaisissa sovelluksissa chatboteista ja virtuaaliavustajista sisällöntuotantoon ja data-analyysiin ilman, että sinun tarvitsee kouluttaa monimutkaisia malleja alusta asti tai tyytyä vain yhteen malliperheeseen. Voit keskittyä päätehtävään ja valita siihen parhaiten sopivan mallin.
Retrieval Augmented Generation (RAG)
Kuvittele, että olet valinnut parhaan mallin jatkoa varten, mutta tarvitset nyt mallin, joka osaa vastata hyvin tarkkoihin toimialaasi tai yritystäsi koskeviin kysymyksiin.
Tässä RAG tulee apuun. Näin se toimii:
Itse malli sisältää yleistä tietoa ja taitoja, joiden avulla se voi käydä ihmismäisiä keskusteluja johdonmukaisilla lauseilla.
RAG lisää tämän tiedon päälle tarkempaa tietoa toimittamasi lisädatan perusteella.
Jos haluat perehtyä RAGiin syvemmin, suosittelen kollegani erinomaista blogikirjoitusta: Huomioitavaa RAG-järjestelmissä tuote- ja palvelukehityksessä.
Bedrockissa RAG-ominaisuudet löytyvät tietopohjista. RAG rikastaa mallin vastauksia hakemalla tietopohjista olennaista tietoa.
Tietopohjaa voi käyttää paitsi käyttäjien kyselyihin vastaamiseen ja asiakirjojen analysointiin myös perustamalleille annettavien promptien rikastamiseen lisäämällä niihin kontekstia. Vastaukset sisältävät viitteitä, jotta käyttäjät voivat tarkistaa tiedot ja niiden paikkansapitävyyden.
Tietopohjan käyttö edellyttää datan esikäsittelyä, jotta sitä voi hyödyntää kyselyissä. Prosessissa data jaetaan osiin, jotka käsitellään, indeksoidaan ja haetaan kyselyjen yhteydessä. Tämän jälkeen valitulla mallilla luodaan embeddingit.
Joudut testaamaan erilaisia datan jakamisstrategioita, jotta saat tietopohjistasi parhaan suorituskyvyn. Datan jakaminen osiin on ratkaisevan tärkeää. Se ei ainoastaan luo tarkempia semanttisia yhteyksiä ja parempia vastauksia, vaan parantaa myös yleistä suorituskykyä ja kustannustehokkuutta.
Embedding
Embedding tarkoittaa, että data – sanat, kuvat tai muut syötteet – muunnetaan ensin numeerisiksi vektoreiksi niiden semanttisten suhteiden perusteella ja tallennetaan sitten vektoridataan.
Tietokanta auttaa tekoälymallia ymmärtämään sanojen välisiä suhteita ja parantamaan käyttäjän antamia tehtäviä, kuten:
Tekstin luokittelu.
Tiivistäminen.
Kääntäminen.
Tunneanalyysi.
Embeddingit muuttavat monimutkaisen datan muotoon, jonka avulla voidaan tehdä perustellumpia päätöksiä.
Tietämyskannan metadata
Haluatko suodattaa dataa tietämyskantakyselyn aikana? Käytä silloin erillistä metadatatiedostoa, joka sisältää tietoja toimitetusta tietämyskannan datatiedostosta. Tiedoston on sijaittava samassa S3-bucketissa kuin datatiedosto, ja sillä on oltava sama nimi kuin siihen liittyvällä tiedostolla, mutta tiedostopäätteellä .metadata.json.
Tietoturva ja suojakaiteet
Kuten AWS:ssä aina, Bedrockissa käytetään jaetun vastuun mallia. AWS huolehtii laitteistosta sekä siirrettävän ja levossa olevan datan salauksesta.
Asiakasdataa ei jaeta mallintarjoajille eikä sitä käytetä perusmallien parantamiseen.
Kuten voi odottaa, Bedrock täyttää myös kaikki yleiset compliance-standardit, kuten ISO:n, HIPAA:n ja GDPR:n.
Hallintaa ja auditointeja varten Bedrock tarjoaa myös kattavat monitorointi- ja lokitusominaisuudet.
Seuraa käyttömittareita Amazon CloudWatchilla ja luo mukautettuja dashboardeja auditointia varten.
AWS CloudTrail seuraa kaikkea API-toimintaa ja auttaa tarvittaessa ongelmien selvittämisessä.
Metadatan, pyyntöjen ja vastausten tallentaminen S3-bucketiin ja Amazon CloudWatch Logsiin on myös mahdollista – ja suositeltavaa.
Suojakaiteet
Bedrockin vaatimustenmukaisuuden ja oletusarvoisesti turvallisen toteutuksen lisäksi käytettävissä on Guardrails-ominaisuus. Sen avulla voit asettaa rajoja, jotka ohjaavat tekoälyä antamaan vain turvallisia ja vastuullisia vastauksia. Tämä koskee sekä syötteitä että tulosteita. Tällä hetkellä suojakaiteita on neljä eri kategoriaa, ja voit yhdistellä niitä vapaasti:
Sisältösuodattimet
Säädä suodatustasoja estääksesi haitallista sisältöä sisältävät syötekehotteet tai mallin vastaukset.
Kielletyt aiheet
Määritä luettelo aiheista, jotka eivät ole hyväksyttäviä sovelluksessasi. Nämä aiheet estetään, jos niitä esiintyy käyttäjäkyselyissä tai mallin vastauksissa. Voit valita enintään 30 aihetta suojakaidetta kohden.
Sanansuodattimet
Määritä suodattimet estämään ei-toivotut sanat, ilmaukset ja kirosanat, mukaan lukien loukkaavat termit ja kilpailijoiden nimet. Helpoin tapa käyttää tätä suodatinta on koota sanat ja ilmaukset tiedostoon ja ladata se suojakaiteeseen.
Arkaluonteisten tietojen suodattimet
Estä tai peitä arkaluonteiset tiedot, kuten henkilötiedot (PII), tai muut mallit, jotka haluat sulkea pois käyttäjän syötteistä ja mallin vastauksista. Nämä ohjeet annetaan regex-malleina.
Voit myös määrittää suojakaiteet palauttamaan käyttäjälle viestejä, jos syöte tai mallin vastaus rikkoo määrittämiäsi suojakaiteiden käytäntöjä.
Voit luoda suojakaiteestasi useita versioita. Aloittaessasi saat automaattisesti muokattavan luonnoksen, jota voit kehittää vaiheittain. Voit kokeilla erilaisia määrityksiä ja arvioida sisäänrakennetun testausikkunan avulla, sopivatko ne käyttötapaukseesi.
Kun olet tyytyväinen määritettyihin asetuksiin, voit viimeistellä suojakaiteesta version ja ottaa sen käyttöön tuettujen perusmallien kanssa.
Voit ottaa suojakaiteet käyttöön suoraan FMs-malleissa inference API -kutsun yhteydessä määrittämällä suojakaiteen tunnuksen ja version. Kun suojakaide on käytössä, se arvioi syötekehotteet ja FM-mallien vastaukset määritettyjen käytäntöjen perusteella.
Yksi tärkeä huomio:
Ennen kuin otat Bedrock-toteutuksesi tuotantokäyttöön, suojakaiteet on testattava perusteellisesti. Suojakaiteet tukevat tällä hetkellä esimerkiksi vain englantia. Saatat joutua testaamaan ja hienosäätämään suojakaideasetuksia tai arvioimaan muita tapoja validoida vastaukset ennen kuin ne näkyvät loppukäyttäjän näytöllä.
Bedrock API:n käyttö
Bedrock API:a voi käyttää kahdella tavalla:
Katsotaan kumpaakin lyhyesti.
AWS CLI:n käyttäminen
Ensin sinun on määritettävä käyttöoikeustiedot. Näin se tehdään.
Kun käyttöoikeustiedot ovat kunnossa, voit käyttää Bedrock-toimintoja komentoriviltä.
Näet kaikki käytettävissä olevat komennot komennolla: “aws bedrock help”
Luettele kaikki käytettävissä olevat mallit komennolla: “aws bedrock list-foundation-models --profile YOUR-PROFILE-NAME”
Esimerkki AWS CLI:n käytöstä
Tätä kirjoitettaessa Anthropic julkaisi juuri Claude 3.5 -mallin uusimman version, joten käytetään sitä esimerkissä. UEFA Euro 2024 -jalkapallon EM-kisat ovat juuri käynnissä, joten pidetään hieman hauskaa ja kysytään Claude 3.5:ltä, minkä maan se veikkaa voittavan turnauksen.
aws bedrock-runtime converse \--model-id anthropic.claude-3-5-sonnet-20240620-v1:0 \--messages '{"role": "user", "content": [{"text": "Based on historical data and success in big tournaments what countries are the top-3 favorites to win Euro2024 Football championship?"}]}' \--region us-east-1 \--query output.message.content \--profile YOUR-PROFILE-NAME
Vastaus:
[
{
"text": "Historiallisten tietojen, viimeaikaisten suoritusten ja suurturnausmenestyksen perusteella kolme todennäköisintä Euro 2024 -voittajaa ovat:\n\n1. Ranska: Ranska oli nykyinen MM-hopeamitalisti (2022) ja Euro 2020 -turnauksen (pelattiin vuonna 2021) neljännesvälieräjoukkue, ja se on ollut jatkuvasti yksi kansainvälisen jalkapallon vahvimmista joukkueista. Se voitti vuoden 2018 MM-kisat, ja sillä on laaja joukko lahjakkaita pelaajia.\n\n2. Englanti: Euro 2020 -finalisti ja vuoden 2018 MM-kisojen välieräjoukkue Englanti on kehittynyt merkittävästi viime vuosina. Sillä on nuori, lahjakas joukkue, joka on menestynyt hyvin suurturnauksissa.\n\n3. Saksa: Vaikka Saksan viime turnaukset ovat tuottaneet pettymyksiä, se on aina vahva haastaja, etenkin pelatessaan kotimaassaan. Euro 2024 järjestetään Saksassa, mikä voi antaa sille etulyöntiaseman. Sillä on menestyksekäs historia suurturnauksissa, ja se tunnetaan kyvystään suoriutua hyvin tärkeissä kilpailuissa.\n\nOn syytä huomata, että muita vahvoja haastajia voivat olla Espanja, Italia, Belgia ja Portugali. Todelliset ennakkosuosikit voivat kuitenkin muuttua joukkueiden suoritusten, loukkaantumisten ja muiden turnausta lähempänä olevien tekijöiden perusteella."
}
]
No… onneksi olkoon, Saksa!
AWS SDK:n käyttäminen
Käytetään seuraavaksi lyhyttä esimerkkikoodia, joka on luotu AWS SDK for Pythonilla (Boto3). (Suosittelen venvin käyttöä, jotta järjestelmäsi pysyy järjestyksessä.)
Esimerkki AWS SDK:n käytöstä
Tässä esimerkissä haluan analysoida alla olevaa kuvaajaa Suomen energian kokonaiskulutuksesta ja hiilidioksidipäästöistä vuosina 1990–2020.
Koodi:
import boto3from botocore.exceptions import ClientErrorMODEL_ID = "anthropic.claude-3-5-sonnet-20240620-v1:0" #Note: exact model ID and available regions do change over timeIMAGE_NAME = "energy_FI.png"profile_name = "YOUR-PROFILE-NAME" # Add this line to define the profile_name variableif profile_name: session = boto3.Session(profile_name=profile_name) bedrock_runtime = session.client('bedrock-runtime', region_name="us-east-1")else: bedrock_runtime = boto3.client('bedrock-runtime', region_name="us-east-1")with open(IMAGE_NAME, "rb") as f: image = f.read()user_message = "Analyze this picture and explain what is happening, when and why? Think step by step and explain trends and events which explain changes in the graph. Output in JSON."
messages = [ { "role": "user", "content": [ {"image": {"format": "png", "source": {"bytes": image}}}, {"text": user_message}, ], }]response = bedrock_runtime.converse( modelId=MODEL_ID, messages=messages,)response_text = response["output"]["message"]["content"][0]["text"]print(response_text)
Vastaus:
{ "analyysi": { "kaavion_tyyppi": "Pinottu pylväskaavio, jonka päällä on viivakaavio", "ajanjakso": "1990–2020", "päämittarit": [ "Energialähteet (TJ)", "Hiilidioksidipäästöt (milj. t CO2)" ], "energialähteet": [ "Fossiiliset (fossiiliset polttoaineet)", "Turve", "Uusiutuvat", "Ydinenergia", "Muut" ], "trendit": [ { "trendi": "Fossiilisten polttoaineiden käytön väheneminen", "kuvaus": "Fossiilisia polttoaineita kuvaava sininen pylväs osoittaa yleistä laskua, joka on erityisen voimakasta vuodesta 2010 alkaen.", "mahdollinen_syy": "Kasvava painotus hiilidioksidipäästöjen vähentämiseen ja siirtymiseen puhtaampiin energialähteisiin." }, { "trendi": "Uusiutuvan energian käytön lisääntyminen", "kuvaus": "Uusiutuvaa energiaa kuvaava vaaleansininen pylväs kasvaa tasaisesti koko ajanjakson ajan.", "mahdollinen_syy": "Uusiutuvaa energiaa edistävä hallituksen politiikka, teknologinen kehitys ja lisääntynyt ympäristötietoisuus." }, { "trendi": "Ydinenergian käytön vaihtelu", "kuvaus": "Ydinenergiaa kuvaava vaaleanpunainen pylväs vaihtelee jonkin verran, mutta ydinenergia säilyy merkittävänä osana energialähteiden kokonaisuutta.", "mahdollinen_syy": "Muutokset ydinenergiapolitiikassa, voimalaitosten toiminnassa tai yleisessä suhtautumisessa ydinenergiaan." }, { "trendi": "CO2-päästöjen väheneminen", "kuvaus": "CO2-päästöjä kuvaava musta viiva huipentuu vuosina 2003–2004 ja laskee sen jälkeen tasaisesti.", "mahdollinen_syy": "Siirtyminen puhtaampiin energialähteisiin, parempi energiatehokkuus ja ilmastopolitiikan toimeenpano." } ], "merkittävät_tapahtumat": [ { "ajanjakso": "2000-luvun alku", "tapahtuma": "Energian kokonaiskulutuksen ja CO2-päästöjen huippu", "mahdollinen_selitys": "Taloudellinen kasvu lisäsi energian kysyntää, ennen kuin tehokkuustoimet ja puhtaammat teknologiat yleistyivät." }, { "ajanjakso": "Vuodesta 2010 alkaen", "tapahtuma": "Fossiilisten polttoaineiden käytön ja CO2-päästöjen nopeutunut väheneminen", "mahdollinen_selitys": "Tiukempi ympäristösääntely, Pariisin sopimus (2015) ja uusiutuvien teknologioiden nopeampi käyttöönotto." } ], "yleinen_johtopäätös": "Kaavio osoittaa Suomen energialähteiden kokonaisuudessa selkeän muutoksen vuosina 1990–2020: fossiilisista polttoaineista on siirrytty kohti uusiutuvia energialähteitä, mikä on vähentänyt CO2-päästöjä merkittävästi erityisesti ajanjakson loppupuolella." }}
Miten Bedrockin hinnoittelumalli toimii
Bedrockin käytön kustannukset perustuvat mallien inferenssiin ja mukauttamiseen. Lyhyesti: API:n käytöstä kertyy token-kohtaisesti laskettava kustannus, ja hinta vaihtelee mallien välillä. Sekä syöte- että tulostokenit ovat maksullisia.
Hinnoitteluvaihtoehtoja on kaksi: On-demand ja provisioned throughput.
On-demand
Suosittelen vahvasti käyttämään On-demand-hinnoittelua, kunnes sinulla on selkeä kuva käytöstäsi. Se on hyvä vaihtoehto testaukseen, hienosäätöön ja POC-toteutuksiin.
Provisioned throughput
Harkitse tätä hinnoittelumallia, kun liiketoimintaperusteesi on vahva ja tiedät, että provisioned throughput on taloudellisesti kannattava vaihtoehto. Käytä tätä vaihtoehtoa vain, jos kysyntä on jatkuvaa ja suurta, sillä se on melko kallis.
Muita merkittäviä hinnoitteluun vaikuttavia tekijöitä ovat knowledge bases ja guardrails. AWS:llä ei valitettavasti vielä ole virallista, helppokäyttöistä hintalaskuria, mutta voit lukea lisää AWS Bedrockin hinnoittelusivulta.
Lopuksi muutama neuvo
Uskalla mennä sinne, minne yrityksesi ei ole aiemmin mennyt, mutta muista asettaa kustannushälytykset.
Suosittelen vahvasti kirjautumaan AWS Consoleen ja tutustumaan Bedrock playground -osioon.
Testaa playgroundissa eri malleja.
Testaa knowledge basen suorituskykyä ja hyötyjä luokittelemattomalla datallasi.
Mieti ja testaa konkreettisia guardraileja ja niiden yhdistelmiä, jotta voit tarjota turvallisia vastauksia.
Ota AWS CLI ja SDK:t käyttöön ja aloita kokeilut.
Muista kuitenkin, että pilviympäristöissä lähes kaikesta kertyy useimmiten edes pieni kustannus. Ellei kustannuksia hallita organisaatiotasolla, muista siis asettaa omat laskutushälytyksesi. Näin teet sen.
Keksi uusia ja konkreettisia ratkaisuja
Nyt kun ”laskennan uusi aikakausi” on täällä, pyri tarkastelemaan nykyisiä haasteita uudesta näkökulmasta. Pidä tavallisen työpäiväsi aikana silmäsi ja korvasi auki mahdollisuuksille, joissa tekoälyratkaisuilla voisi ratkaista arjen ongelmia.
Käy myös läpi ideapankkisi tai hiljattain hylätyt ideat, sillä tekoälyavusteinen ratkaisu voi nyt tehdä niiden toteuttamisen mahdolliseksi.
Vinkki: käytä Bedrock Studiota
Amazon Bedrock Studio on hiljattain julkaistu Bedrockin esikatseluominaisuus. Sen avulla voit rakentaa sovelluksia helposti ilman erillistä kehitysympäristöä. Ajattele sitä helppokäyttöisenä verkkokäyttöliittymänä, jossa voit kokeilla eri malleja ja ominaisuuksia. Voit esimerkiksi testata erilaisia prompteja Anthropic Claude -mallilla ilman koodin kirjoittamista.
Bedrock Studio tekee myös knowledge bases -ominaisuuksien (kontekstitietoisiin vastauksiin), guardrails-ominaisuuksien (vastuulliseen tekoälyyn) ja function callingin (tiettyjen toimintojen käyttämiseen) lisäämisestä helppoa – ilman ohjelmointiosaamista.
- Tekoäly
- Muotoilu ja UX
- Ohjelmistokehitys
Subscribe to our newsletter
Related blogs