Vi er glade for å kunngjøre tilgjengeligheten av respons som strømmer gjennom Amazon SageMaker sanntidsslutning. Nå kan du kontinuerlig streame slutningssvar tilbake til klienten når du bruker SageMaker sanntidsslutning for å hjelpe deg med å bygge interaktive opplevelser for generative AI-applikasjoner som chatbots, virtuelle assistenter og musikkgeneratorer. Med denne nye funksjonen kan du begynne å strømme svarene umiddelbart når de er tilgjengelige i stedet for å vente på at hele svaret skal genereres. Dette reduserer tiden til første byte for dine generative AI-applikasjoner.
I dette innlegget viser vi hvordan du bygger en streaming-webapplikasjon ved å bruke SageMaker sanntidsendepunkter med den nye responsstrømmingsfunksjonen for en interaktiv chat-brukssak. Vi bruker Streamlit for prøvedemoapplikasjonens brukergrensesnitt.
Løsningsoversikt
For å få svar strømmet tilbake fra SageMaker kan du bruke vår nye InvokeEndpointWithResponseStream API. Det bidrar til å øke kundetilfredsheten ved å levere en raskere tid-til-første-svar-byte. Denne reduksjonen i kundeoppfattet ventetid er spesielt avgjørende for applikasjoner bygget med generative AI-modeller, der umiddelbar behandling verdsettes fremfor å vente på hele nyttelasten. Dessuten introduserer den en klebrig sesjon som vil muliggjøre kontinuitet i interaksjoner, til fordel for brukstilfeller som chatbots, for å skape mer naturlige og effektive brukeropplevelser.
Implementeringen av responsstrømming i SageMaker sanntidsendepunkter oppnås gjennom HTTP 1.1 chunk-koding, som er en mekanisme for å sende flere svar. Dette er en HTTP-standard som støtter binært innhold og støttes av de fleste klient/server-rammeverk. HTTP chunked-koding støtter både tekst- og bildedatastrømming, noe som betyr at modellene som er vert på SageMaker-endepunkter kan sende tilbakestrømmede svar som tekst eller bilde, som f.eks. Falcon, Lama 2og Stabil diffusjon modeller. Når det gjelder sikkerhet, er både input og output sikret ved hjelp av TLS ved hjelp av AWS Sigv4 Auth. Andre strømmeteknikker som Server-sendte hendelser (SSE) er også implementert ved å bruke den samme HTTP chunked-kodingsmekanismen. For å dra nytte av det nye streaming-APIet, må du sørge for at modellbeholderen returnerer det strømmede svaret som kodede data i biter.
Følgende diagram illustrerer arkitekturen på høyt nivå for responsstrømming med et SageMaker-slutningsendepunkt.
En av brukstilfellene som vil dra nytte av streamingrespons er generative AI-modelldrevne chatbots. Tradisjonelt sender brukere en spørring og venter på at hele svaret blir generert før de mottar et svar. Dette kan ta dyrebare sekunder eller enda lenger, noe som potensielt kan forringe ytelsen til applikasjonen. Med responsstrømming kan chatboten begynne å sende tilbake delvise slutningsresultater etter hvert som de genereres. Dette betyr at brukere kan se den første responsen nesten umiddelbart, selv når AI fortsetter å finpusse svaret sitt i bakgrunnen. Dette skaper en sømløs og engasjerende samtaleflyt, der brukere føler at de chatter med en AI som forstår og reagerer i sanntid.
I dette innlegget viser vi frem to containeralternativer for å lage et SageMaker-endepunkt med responsstrømming: ved å bruke en AWS Stor modellslutning (LMI) og Hugging Face Tekstgenerasjonsslutning (TGI) beholder. I de følgende delene leder vi deg gjennom de detaljerte implementeringstrinnene for å distribuere og teste Falcon-7B-Instruk modell som bruker både LMI- og TGI-beholdere på SageMaker. Vi valgte Falcon 7B som eksempel, men enhver modell kan dra nytte av denne nye strømmefunksjonen.
Forutsetninger
Du trenger en AWS-konto med en AWS identitets- og tilgangsadministrasjon (IAM) rolle med tillatelser til å administrere ressurser opprettet som en del av løsningen. For detaljer, se Opprette en AWS-konto. Hvis dette er første gang du jobber med Amazon SageMaker Studio, må du først opprette en SageMaker-domene. I tillegg kan det hende du må be om en tjenestekvoteøkning for de tilsvarende SageMaker-vertsinstansene. For Falcon-7B-Instruct-modellen bruker vi en ml.g5.2xlarge SageMaker-vertsinstans. For å være vert for en Falcon-40B-Instruct-modell bruker vi en ml.g5.48xlarge SageMaker-vertsinstans. Du kan be om en kvoteøkning fra Service Quotas UI. For mer informasjon, se Ber om kvoteøkning.
Alternativ 1: Distribuer et sanntidsstrømende endepunkt ved hjelp av en LMI-beholder
LMI-beholderen er en av Deep Learning-beholderne for inferens av store modeller som er vert av SageMaker for å gjøre det lettere å være vert for store språkmodeller (LLM) på AWS-infrastruktur for brukstilfeller med lav latens. LMI-beholderen bruker Deep Java Library (DJL) servering, som er et åpen kildekode, høynivå, motoragnostisk Java-rammeverk for dyp læring. Med disse beholderne kan du bruke tilsvarende åpen kildekode-biblioteker som f.eks DeepSpeed, Akselerer, Transformers-nevronxog Raskere Transformer å partisjonere modellparametere ved å bruke modellparallellismeteknikker for å bruke minnet til flere GPUer eller akseleratorer for slutninger. For mer informasjon om fordelene ved å bruke LMI-beholderen til å distribuere store modeller på SageMaker, se Distribuer store modeller med høy ytelse ved å bruke FasterTransformer på Amazon SageMaker og Distribuer store modeller på Amazon SageMaker ved å bruke DJLServing og DeepSpeed modell parallell inferens. Du kan også finne flere eksempler på hosting av åpen kildekode LLM-er på SageMaker ved å bruke LMI-beholderne i denne GitHub repo.
For LMI-beholderen forventer vi at følgende artefakter hjelper til med å sette opp modellen for slutning:
- servering.properties (påkrevd) – Definerer modellserverinnstillingene
- model.py (valgfritt) – En Python-fil for å definere kjerneslutningslogikken
- requirements.txt (valgfritt) – Eventuelle ekstra pip-hjul må installeres
LMI-beholdere kan brukes til å være vert for modeller uten å oppgi din egen slutningskode. Dette er ekstremt nyttig når det ikke er egendefinert forhåndsbehandling av inndataene eller etterbehandling av modellens spådommer. Vi bruker følgende konfigurasjon:
- For dette eksemplet er vi vert for Falcon-7B-Instruct-modellen. Vi må lage en
serving.properties
konfigurasjonsfil med våre ønskede vertsalternativer og pakke den inn i en tar.gz-artefakt. Responsstrømming kan aktiveres i DJL Serving ved å stille innenable_streaming
alternativet iserving.properties
fil. For alle støttede parametere, se Streaming Python-konfigurasjon. - I dette eksemplet bruker vi standardbehandlerne i DJL Serving for å streame svar, så vi bryr oss kun om å sende forespørsler og analysere utdatasvaret. Du kan også gi en
entrypoint
kode med en tilpasset behandler i enmodel.py
fil for å tilpasse inn- og utdatabehandlere. For mer informasjon om tilpasset behandler, se Tilpasset model.py-behandler. - Fordi vi er vert for Falcon-7B-Instruct-modellen på en enkelt GPU-instans (ml.g5.2xlarge), setter vi
option.tensor_parallel_degree
til 1. Hvis du planlegger å kjøre i flere GPUer, bruk denne til å angi antall GPUer per arbeider. - Vi bruker
option.output_formatter
for å kontrollere utdatainnholdstypen. Standard utdatainnholdstype erapplication/json
, så hvis applikasjonen din krever en annen utgang, kan du overskrive denne verdien. For mer informasjon om tilgjengelige alternativer, se Konfigurasjoner og innstillinger og Alle DJL-konfigurasjonsalternativer.
For å lage SageMaker-modellen, hent beholderbildets URI:
Bruke SageMaker Python SDK å lage SageMaker-modellen og distribuere den til et SageMaker-endepunkt i sanntid ved å bruke utplassere metode:
Når endepunktet er i bruk, kan du bruke InvokeEndpointWithResponseStream
API-kall for å påkalle modellen. Denne API-en lar modellen svare som en strøm av deler av den fulle responsnyttelasten. Dette gjør det mulig for modeller å svare med svar av større størrelse og muliggjør raskere tid-til-første-byte for modeller der det er en betydelig forskjell mellom genereringen av den første og siste byten av responsen.
Svarinnholdstypen vist i x-amzn-sagemaker-content-type
for LMI-beholderen er application/jsonline
s som spesifisert i konfigurasjonen av modellegenskaper. Fordi det er en del av vanlige dataformater som støttes for inferens, kan vi bruke standard deserializer levert av SageMaker Python SDK for å deserialisere JSON-linjedataene. Vi lager en hjelper LineIterator
klasse for å analysere svarstrømmen mottatt fra slutningsforespørselen:
Med klassen i den foregående koden, hver gang et svar streames, vil det returnere en binær streng (f.eks. b'{"outputs": [" a"]}n'
) som kan deserialiseres igjen til en Python-ordbok ved å bruke JSON-pakken. Vi kan bruke følgende kode for å iterere gjennom hver strømmet tekstlinje og returnere tekstsvar:
Følgende skjermbilde viser hvordan det ville sett ut hvis du påkalte modellen gjennom SageMaker-notisboken ved hjelp av en LMI-beholder.
Alternativ 2: Implementer en chatbot ved å bruke en Hugging Face TGI-beholder
I forrige avsnitt så du hvordan du distribuerer Falcon-7B-Instruct-modellen ved å bruke en LMI-beholder. I denne delen viser vi hvordan du gjør det samme ved å bruke en Klemme ansiktet Text Generation Inference (TGI) container på SageMaker. TGI er en åpen kildekode, spesialbygd løsning for distribusjon av LLM-er. Den inneholder optimaliseringer inkludert tensorparallellisme for raskere multi-GPU-inferens, dynamisk batching for å øke den totale gjennomstrømningen, og optimalisert transformatorkode ved bruk av flash-oppmerksomhet for populære modellarkitekturer inkludert BLOOM, T5, GPT-NeoX, StarCoder og LLaMa.
Støtte for TGI dyplæringsbeholdere token-strømming ved hjelp av Server-sendte hendelser (SSE). Med token-streaming kan serveren begynne å svare etter den første prefill
passere direkte, uten å vente på at hele generasjonen skal være ferdig. For ekstremt lange spørringer betyr dette at klienter kan begynne å se at noe skjer i størrelsesordener før arbeidet er ferdig. Følgende diagram viser en ende-til-ende arbeidsflyt for forespørsel/svar på høyt nivå for hosting av LLM-er på et SageMaker-endepunkt ved bruk av TGI-beholderen.
For å distribuere Falcon-7B-Instruct-modellen på et SageMaker-endepunkt, bruker vi HuggingFaceModel
klasse fra SageMaker Python SDK. Vi starter med å sette våre parametere som følger:
Sammenlignet med å distribuere vanlige Hugging Face-modeller, må vi først hente beholderens URI og gi den til våre HuggingFaceModel
modellklasse med image_uri
peker på bildet. For å hente den nye Hugging Face LLM DLC i SageMaker, kan vi bruke get_huggingface_llm_image_uri
metode levert av SageMaker SDK. Denne metoden lar oss hente URI for ønsket Hugging Face LLM DLC basert på spesifisert backend, økt, region og versjon. For mer informasjon om tilgjengelige versjoner, se HuggingFace Text Generation Inference Containers.
Vi lager deretter HuggingFaceModel
og distribuer den til SageMaker ved hjelp av deploy
metode:
Hovedforskjellen sammenlignet med LMI-beholderen er at du aktiverer responsstrømming når du påkaller endepunktet ved å levere stream=true
som en del av nyttelasten for påkallingsforespørsel. Følgende kode er et eksempel på nyttelasten som brukes til å starte TGI-beholderen med strømming:
Deretter kan du påkalle endepunktet og motta et strømmet svar ved å bruke følgende kommando:
Svarinnholdstypen vist i x-amzn-sagemaker-content-type
for TGI-beholderen er text/event-stream
. Vi bruker StreamDeserializer for å deserialisere responsen til EventStream klasse og analysere svarteksten ved å bruke den samme LineIterator
klasse som den som brukes i LMI-beholderdelen.
Merk at det streamede svaret fra TGI-beholderne vil returnere en binær streng (f.eks. b`data:{"token": {"text": " sometext"}}`)
, som kan deserialiseres igjen til en Python-ordbok ved hjelp av en JSON-pakke. Vi kan bruke følgende kode for å iterere gjennom hver strømmet tekstlinje og returnere et tekstsvar:
Følgende skjermbilde viser hvordan det ville sett ut hvis du påkalte modellen gjennom SageMaker-notisboken ved hjelp av en TGI-beholder.
Kjør chatbot-appen på SageMaker Studio
I dette tilfellet bygger vi en dynamisk chatbot på SageMaker Studio ved hjelp av Strømbelyst, som påkaller Falcon-7B-Instruct-modellen som er vert på et SageMaker sanntidsendepunkt for å gi strømmesvar. Først kan du teste at strømmesvarene fungerer i notatboken som vist i forrige seksjon. Deretter kan du sette opp Streamlit-applikasjonen i SageMaker Studio JupyterServer-terminalen og få tilgang til chatbot-grensesnittet fra nettleseren din ved å fullføre følgende trinn:
- Åpne en systemterminal i SageMaker Studio.
- På toppmenyen til SageMaker Studio-konsollen velger du filet, deretter Ny, deretter terminal.
- Installer de nødvendige Python-pakkene som er spesifisert i krav.txt file:
- Konfigurer miljøvariabelen med endepunktnavnet distribuert i kontoen din:
- Start Streamlit-appen fra
streamlit_chatbot_<LMI or TGI>.py
fil, som automatisk oppdaterer endepunktnavnene i skriptet basert på miljøvariabelen som ble satt opp tidligere: - For å få tilgang til Streamlit-grensesnittet, kopier SageMaker Studio-URLen til en annen fane i nettleseren din og erstatt
lab?
medproxy/[PORT NUMBER]/
. Fordi vi spesifiserte serverporten til 6006, bør URL-en se slik ut:
Bytt ut domene-ID-en og regionen i den foregående URL-en med kontoen din og regionen for å få tilgang til chatbot-grensesnittet. Du kan finne noen foreslåtte ledetekster i venstre rute for å komme i gang.
Følgende demo viser hvordan responsstrømming revolusjonerer brukeropplevelsen. Det kan få interaksjoner til å føles flytende og responsive, og til slutt øke brukertilfredsheten og engasjementet. Referere til GitHub repo for mer informasjon om chatbot-implementeringen.
Rydd opp
Når du er ferdig med å teste modellene, som en beste praksis, slett endepunktet for å spare kostnader hvis endepunktet ikke lenger er nødvendig:
konklusjonen
I dette innlegget ga vi en oversikt over å bygge applikasjoner med generativ AI, utfordringene og hvordan SageMaker sanntidsresponsstrømming hjelper deg med å takle disse utfordringene. Vi viste frem hvordan man bygger en chatbot-applikasjon for å distribuere Falcon-7B-Instruct-modellen for å bruke responsstrømming ved å bruke både SageMaker LMI og HuggingFace TGI-beholdere ved å bruke et eksempel tilgjengelig på GitHub.
Begynn å bygge dine egne banebrytende streamingapplikasjoner med LLMs og SageMaker i dag! Ta kontakt med oss for ekspertveiledning og frigjør potensialet til strømming av store modeller for prosjektene dine.
Om forfatterne
Raghu Ramesha er senior ML Solutions Architect med Amazon SageMaker Service-teamet. Han fokuserer på å hjelpe kunder med å bygge, distribuere og migrere ML-produksjonsarbeidsmengder til SageMaker i stor skala. Han spesialiserer seg på maskinlæring, AI og datasynsdomener, og har en mastergrad i informatikk fra UT Dallas. På fritiden liker han å reise og fotografere.
Abhi Shivaditya er en senior løsningsarkitekt hos AWS, og jobber med strategiske globale bedriftsorganisasjoner for å lette bruken av AWS-tjenester på områder som kunstig intelligens, distribuert databehandling, nettverk og lagring. Hans ekspertise ligger i dyp læring innen domenene naturlig språkbehandling (NLP) og datasyn. Abhi hjelper kunder med å implementere høyytelses maskinlæringsmodeller effektivt innenfor AWS-økosystemet.
Alan Tan er en senior produktsjef hos SageMaker, og leder innsatsen for store modellslutninger. Han brenner for å bruke maskinlæring på analyseområdet. Utenom jobben liker han å være ute.
Melaniei, PhD, er en senior AI/ML-spesialist TAM ved AWS med base i Sydney, Australia. Hun hjelper bedriftskunder med å bygge løsninger ved hjelp av toppmoderne AI/ML-verktøy på AWS og gir veiledning om arkitektur og implementering av ML-løsninger med beste praksis. På fritiden elsker hun å utforske naturen og tilbringe tid med familie og venner.
Sam Edwards, er en skyingeniør (AI/ML) ved AWS Sydney, spesialisert i maskinlæring og Amazon SageMaker. Han brenner for å hjelpe kunder med å løse problemer knyttet til arbeidsflyter for maskinlæring og skape nye løsninger for dem. Utenom jobben liker han å spille racketsport og reise.
James Sanders er senior programvareingeniør hos Amazon Web Services. Han jobber på sanntidsslutningsplattformen for Amazon SageMaker.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- PlatoData.Network Vertical Generative Ai. Styrk deg selv. Tilgang her.
- PlatoAiStream. Web3 Intelligence. Kunnskap forsterket. Tilgang her.
- PlatoESG. Bil / elbiler, Karbon, CleanTech, Energi, Miljø, Solenergi, Avfallshåndtering. Tilgang her.
- PlatoHelse. Bioteknologisk og klinisk etterretning. Tilgang her.
- ChartPrime. Hev handelsspillet ditt med ChartPrime. Tilgang her.
- BlockOffsets. Modernisering av eierskap for miljøkompensasjon. Tilgang her.
- kilde: https://aws.amazon.com/blogs/machine-learning/elevating-the-generative-ai-experience-introducing-streaming-support-in-amazon-sagemaker-hosting/
- :er
- :ikke
- :hvor
- $OPP
- 1
- 10
- 100
- 11
- 13
- 14
- 16
- 1900
- 23
- 7
- 8
- 9
- a
- Om oss
- akseleratorer
- adgang
- Logg inn
- kontoer
- oppnådd
- tvers
- Ytterligere
- I tillegg
- adresse
- Adopsjon
- Fordel
- Etter
- en gang til
- AI
- AI-modeller
- AI / ML
- Alle
- tillater
- nesten
- også
- Amazon
- Amazon SageMaker
- Amazon Web Services
- an
- analytics
- og
- Kunngjøre
- En annen
- besvare
- noen
- api
- app
- Søknad
- søknader
- påføring
- arkitektur
- ER
- AREA
- områder
- Array
- kunstig
- kunstig intelligens
- AS
- assistenter
- bistår
- At
- Australia
- automatisk
- tilgjengelighet
- tilgjengelig
- AWS
- tilbake
- Backend
- bakgrunn
- basert
- BE
- fordi
- før du
- begynne
- nytte
- nytte
- Fordeler
- BEST
- beste praksis
- mellom
- Bloom
- kroppen
- øke
- både
- nett~~POS=TRUNC leseren~~POS=HEADCOMP
- buffer
- bygge
- Bygning
- bygget
- men
- by
- ring
- CAN
- hvilken
- saken
- saker
- utfordringer
- utfordrende
- karakter
- chatbot
- chatbots
- chatting
- sjekk
- Velg
- valgte
- klasse
- kunde
- klienter
- Cloud
- kode
- kommentere
- sammenlignet
- fullført
- datamaskin
- informatikk
- Datamaskin syn
- databehandling
- Konfigurasjon
- Konsoll
- inneholde
- Container
- Containere
- innhold
- fortsette
- fortsetter
- kontinuitet
- kontinuerlig
- kontroll
- Samtale
- Kjerne
- Tilsvarende
- Kostnader
- kunne
- skape
- opprettet
- skaper
- Opprette
- avgjørende
- skikk
- kunde
- Kundetilfredshet
- Kunder
- tilpasse
- skjærekant
- Dallas
- dato
- dyp
- dyp læring
- Misligholde
- definere
- definerer
- Grad
- levere
- demo
- utplassere
- utplassert
- utplasserings
- ønsket
- detaljert
- detaljer
- forskjell
- forskjellig
- direkte
- distribueres
- distribuert databehandling
- do
- domene
- domener
- gjort
- dynamisk
- hver enkelt
- Tidligere
- økosystem
- effektiv
- effektivt
- innsats
- heve
- muliggjøre
- aktivert
- muliggjør
- slutt
- ende til ende
- slutt
- Endpoint
- engasjement
- engasjerende
- ingeniør
- forbedre
- styrke
- sikre
- Enterprise
- Hele
- Miljø
- Selv
- Event
- hendelser
- eksempel
- eksempler
- Unntatt
- opphisset
- forvente
- erfaring
- Erfaringer
- Expert
- ekspertise
- utforske
- eksportere
- utsatt
- ekstremt
- Face
- legge til rette
- falsk
- familie
- raskere
- Trekk
- føler
- filet
- Finn
- Først
- første gang
- flyten
- væske
- fokuserer
- etter
- følger
- Til
- format
- Rammeverk
- rammer
- Gratis
- venner
- fra
- fullt
- funksjon
- generert
- generasjonen
- generative
- Generativ AI
- generatorer
- få
- gif
- Global
- GPU
- GPU
- garantert
- veiledning
- Skjer
- he
- Helse
- hjelpe
- hjelpe
- hjelper
- her
- Høy
- høyt nivå
- høy ytelse
- hans
- holder
- vert
- vert
- Hosting
- Hvordan
- Hvordan
- HTML
- http
- HTTPS
- Klem ansikt
- ID
- Identitet
- if
- illustrerer
- bilde
- umiddelbar
- umiddelbart
- iverksette
- gjennomføring
- implementert
- implementere
- importere
- in
- Inkludert
- Øke
- informasjon
- Infrastruktur
- innledende
- inngang
- innganger
- installere
- f.eks
- øyeblikkelig
- i stedet
- Intelligens
- interaksjoner
- interaktiv
- inn
- Introduserer
- innføre
- påkalt
- påkaller
- saker
- IT
- DET ER
- Java
- jpg
- JSON
- Språk
- stor
- større
- Siste
- Ventetid
- ledende
- læring
- venstre
- Lengde
- bibliotekene
- Bibliotek
- ligger
- Life
- i likhet med
- linje
- linjer
- Llama
- LLM
- Lang
- lenger
- Se
- ser ut som
- elsker
- maskin
- maskinlæring
- Hoved
- opprettholder
- gjøre
- administrer
- leder
- mestere
- max
- Kan..
- me
- midler
- mekanisme
- Minne
- Meny
- metode
- migrere
- minutter
- ML
- modell
- modeller
- mer
- Videre
- mest
- flere
- musikk
- navn
- navn
- Naturlig
- Natural Language Processing
- Natur
- Trenger
- nettverk
- Ny
- nlp
- Nei.
- bærbare
- nå
- Antall
- gjenstander
- of
- on
- ONE
- bare
- åpen
- åpen kildekode
- optimalisert
- Alternativ
- alternativer
- or
- ordrer
- organisasjoner
- Annen
- vår
- ut
- utendørs
- produksjon
- utenfor
- enn
- samlet
- oversikt
- egen
- pakke
- pakker
- brød
- Parallel
- parametere
- del
- spesielt
- deler
- passere
- lidenskapelig
- for
- ytelse
- tillatelser
- phd
- fotografering
- fly
- plattform
- plato
- Platon Data Intelligence
- PlatonData
- spiller
- Point
- Populær
- posisjon
- Post
- potensiell
- potensielt
- praksis
- praksis
- Dyrebar
- Spådommer
- forrige
- Problem
- prosessering
- Produkt
- Produktsjef
- Produksjon
- prosjekter
- egenskaper
- gi
- forutsatt
- gir
- gi
- Python
- spørsmål
- heve
- å nå
- Lese
- ekte
- sanntids
- motta
- mottatt
- mottak
- reduksjon
- raffinering
- region
- regelmessig
- i slekt
- erstatte
- anmode
- forespørsler
- påkrevd
- Krav
- Krever
- Ressurser
- Svare
- svar
- svar
- responsive
- Resultater
- retur
- avkastning
- revolusjonerer
- Rolle
- Kjør
- sagemaker
- SageMaker Inference
- samme
- tilfredshet
- Spar
- så
- Skala
- Vitenskap
- SDK
- sømløs
- sekunder
- Seksjon
- seksjoner
- sikret
- sikkerhet
- se
- SELV
- send
- sending
- senior
- dømme
- tjeneste
- Tjenester
- servering
- Session
- sett
- innstilling
- hun
- bør
- Vis
- presentere
- showcased
- vist
- Viser
- signifikant
- enkelt
- Størrelse
- So
- Software
- Software Engineer
- løsning
- Solutions
- LØSE
- noen
- noe
- kilde
- spesialist
- spesialisert
- spesialisert
- spesifisert
- bruke
- splittet
- Sports
- Standard
- Begynn
- startet
- state-of-the-art
- Steps
- klebrig
- lagring
- Strategisk
- stream
- streames
- streaming
- String
- studio
- slik
- forsyne
- støtte
- Støttes
- Støtter
- sikker
- sydney
- system
- Ta
- lag
- teknikker
- fortelle
- terminal
- vilkår
- test
- Testing
- Det
- De
- Området
- Dem
- deretter
- Der.
- Disse
- de
- denne
- Gjennom
- gjennomstrømning
- tid
- til
- token
- verktøy
- topp
- tradisjonelt
- transformers
- Traveling
- sant
- prøve
- to
- typen
- ui
- Til syvende og sist
- forstår
- ukjent
- låse opp
- Oppdater
- URL
- us
- bruke
- bruk sak
- brukt
- Bruker
- Brukererfaring
- Brukere
- bruker
- ved hjelp av
- vanligvis
- verdi
- verdsatt
- variabel
- versjon
- versjoner
- av
- virtuelle
- syn
- vente
- venter
- var
- we
- web
- Webapplikasjon
- webtjenester
- Hva
- Hva er
- Hjul
- når
- hvilken
- mens
- Wikipedia
- vil
- med
- innenfor
- uten
- Arbeid
- arbeidsflyt
- arbeidsflyt
- arbeid
- virker
- ville
- skrive
- skrevet
- Du
- Din
- zephyrnet