Dette innlegget er skrevet sammen med Ming (Melvin) Qin, David Bericat og Brad Genereaux fra NVIDIA.
Medisinsk bildebehandling AI-forskere og -utviklere trenger et skalerbart bedriftsrammeverk for å bygge, distribuere og integrere AI-applikasjonene deres. AWS og NVIDIA har gått sammen for å gjøre denne visjonen til virkelighet. AWS, NVIDIA og andre partnere bygge applikasjoner og løsninger for å gjøre helsevesenet mer tilgjengelig, rimelig og effektivt ved å akselerere skytilkoblingen for enterprise imaging. MONAI Deploy er en av nøkkelmodulene innenfor MONAI (Medical Open Network for Artificial Intelligence) utviklet av et konsortium av akademiske og industriledere, inkludert NVIDIA. AWS HealthImaging (AHI) er en HIPAA-kvalifisert, svært skalerbar, ytende og kostnadseffektiv medisinsk bildebutikk. Vi har utviklet en MONAI Deploy-kobling til AHI for å integrere medisinsk bildebehandling AI-applikasjoner med sekundære bildehentingsforsinkelser i skala drevet av skybaserte APIer. MONAI AI-modeller og applikasjoner kan hostes på Amazon SageMaker, som er en fullstendig administrert tjeneste for å implementere modeller for maskinlæring (ML) i stor skala. SageMaker tar seg av å sette opp og administrere forekomster for inferens og gir innebygde beregninger og logger for endepunkter som du kan bruke til å overvåke og motta varsler. Det tilbyr også en rekke NVIDIA GPU-forekomster for ML-inferens, samt flere modelldistribusjonsalternativer med automatisk skalering, inkludert sanntidsslutning, serverløs slutning, asynkron slutningog batch-transformasjon.
I dette innlegget viser vi hvordan du distribuerer en MONAI Application Package (MAP) med koblingen til AWS HealthImaging, ved å bruke et SageMaker multi-modell endepunkt for sanntidsslutning og asynkron inferens. Disse to alternativene dekker et flertall av brukstilfeller for bruk av rørledninger for medisinsk bildebehandling i nesten sanntid.
Løsningsoversikt
Følgende diagram illustrerer løsningsarkitekturen.
Forutsetninger
Fullfør følgende forutsetningstrinn:
- Bruk en AWS-konto med en av følgende regioner, der AWS HealthImaging er tilgjengelig: North Virginia (
us-east-1
), Oregon (us-west-2
), Irland (eu-west-1
), og Sydney (ap-southeast-2
). - Lag en Amazon SageMaker Studio domene og brukerprofil med AWS identitets- og tilgangsadministrasjon (IAM) tillatelse til å få tilgang til AWS HealthImaging.
- Aktiver utvidelsen JupyterLab v3 og installer Imjoy-jupyter-extension hvis du vil visualisere medisinske bilder på SageMaker bærbare interaktivt ved hjelp av itkwidgets.
MAP-kontakt til AWS HealthImaging
AWS HealthImaging importerer DICOM P10-filer og konverterer dem til ImageSets, som er en optimalisert representasjon av en DICOM-serie. AHI gir API-tilgang til ImageSet-metadata og ImageFrames. Metadata inneholder alle DICOM-attributter i et JSON-dokument. ImageFrames returneres kodet i High-Throughput JPEG2000 (HTJ2K) tapsfritt format, som kan dekodes ekstremt raskt. ImageSets kan hentes ved å bruke AWS kommandolinjegrensesnitt (AWS CLI) eller AWS SDK-er.
MONAI er et rammeverk for medisinsk bildebehandling AI som tar forskningsgjennombrudd og AI-applikasjoner inn i klinisk effekt. MONAI Deploy er prosesseringsrørledningen som muliggjør ende-til-ende arbeidsflyt, inkludert pakking, testing, distribusjon og kjøring av AI-applikasjoner for medisinsk bildebehandling i klinisk produksjon. Den omfatter MONAI Implementer app-SDK, MONAI Deploy Express, Workflow Managerog Informatikkgateway. MONAI Deploy App SDK gir bruksklare algoritmer og et rammeverk for å akselerere bygging av medisinsk bildebehandling AI-applikasjoner, samt verktøy for å pakke applikasjonen inn i en MAP-beholder. De innebygde standardbaserte funksjonalitetene i app-SDK-en gjør at MAP-en jevnt kan integreres i helse-IT-nettverk, noe som krever bruk av standarder som DICOM, HL7 og FHIR, og på tvers av datasenter- og skymiljøer. MAP-er kan bruke både forhåndsdefinerte og tilpassede operatører for DICOM-bildelasting, serievalg, modellslutning og etterbehandling
Vi har utviklet en Python-modul ved å bruke AWS HealthImaging Python SDK Boto3. Du kan pip-installere den og bruke hjelpefunksjonen til å hente DICOM Service-Object Pair (SOP)-forekomster som følger:
!pip install -q AHItoDICOMInterface
from AHItoDICOMInterface.AHItoDICOM import AHItoDICOM
helper = AHItoDICOM()
instances = helper.DICOMizeImageSet(datastore_id=datastoreId , image_set_id=next(iter(imageSetIds)))
Utgangs-SOP-forekomstene kan visualiseres ved å bruke de interaktive 3D medisinske bildeviser-itkwidgetene i følgende bærbare. De AHItoDICOM klasse drar fordel av flere prosesser for å hente pikselrammer fra AWS HealthImaging parallelt, og dekode de HTJ2K binære blobs bruker Python OpenJPEG-bibliotek. ImageSetIds kommer fra utdatafilene til en gitt AWS HealthImaging-importjobb. Gitt DatastoreId og import JobId, kan du hente ImageSetId, som tilsvarer DICOM-seriens instans-UID, som følger:
imageSetIds = {}
try: response = s3.head_object(Bucket=OutputBucketName, Key=f"output/{res_createstore['datastoreId']}-DicomImport-{res_startimportjob['jobId']}/job-output-manifest.json") if response['ResponseMetadata']['HTTPStatusCode'] == 200: data = s3.get_object(Bucket=OutputBucketName, Key=f"output/{res_createstore['datastoreId']}-DicomImport-{res_startimportjob['jobId']}/SUCCESS/success.ndjson") contents = data['Body'].read().decode("utf-8") for l in contents.splitlines(): isid = json.loads(l)['importResponse']['imageSetId'] if isid in imageSetIds: imageSetIds[isid]+=1 else: imageSetIds[isid]=1
except ClientError: pass
Med ImageSetId kan du hente DICOM-headermetadata og bildepiksler separat ved å bruke native AWS HealthImaging API-funksjoner. De DICOM eksportør aggregater DICOM-hodene og bildepiksler i Pydicom datasett, som kan behandles av MAP DICOM data loader operatør. Ved å bruke funksjonen DICOMizeImageSet() har vi laget en kobling for å laste bildedata fra AWS HealthImaging, basert på MAP DICOM-datalasteroperatør:
class AHIDataLoaderOperator(Operator): def __init__(self, ahi_client, must_load: bool = True, *args, **kwargs): self.ahi_client = ahi_client … def _load_data(self, input_obj: string): study_dict = {} series_dict = {} sop_instances = self.ahi_client.DICOMizeImageSet(input_obj['datastoreId'], input_obj['imageSetId'])
I foregående kode ahi_client
er en forekomst av AHItoDICOM DICOM eksportørklassen, med datainnhentingsfunksjoner illustrert. Vi har inkludert denne nye datalasteroperatøren i en 3D-miltsegmenterings-AI-applikasjon laget av MONAI Deploy App SDK. Du kan først utforske hvordan du oppretter og kjører denne applikasjonen på en lokal notatbokforekomst, og distribuer deretter denne MAP-applikasjonen til SageMaker-administrerte inferensendepunkter.
SageMaker asynkron inferens
En SageMaker asynkron slutning endepunkt brukes for forespørsler med store nyttelaststørrelser (opptil 1 GB), lange behandlingstider (opptil 15 minutter) og krav til ventetid nesten i sanntid. Når det ikke er noen forespørsler å behandle, kan dette distribusjonsalternativet nedskalere forekomsttellingen til null for kostnadsbesparelser, noe som er ideelt for ML-inferensarbeidsbelastninger for medisinsk bildebehandling. Følg trinnene i prøve notatbok for å opprette og påkalle SageMaker asynkron inferens-endepunkt. Til opprette et asynkront inferensendepunkt, må du først opprette en SageMaker-modell og endepunktkonfigurasjon. For å lage en SageMaker-modell, må du laste en model.tar.gz-pakke med en definert katalogstruktur inn i en Docker-beholder. Model.tar.gz-pakken inkluderer en forhåndsopplært miltsegmenteringsfil model.ts og en tilpasset inference.py-fil. Vi har brukt en forhåndsbygd beholder med Python 3.8 og PyTorch 1.12.1 rammeverkversjoner for å laste modellen og kjøre spådommer.
I den tilpassede inference.py fil, instansierer vi en AHItoDICOM-hjelperklasse fra AHItoDICOMInterface og bruker den til å lage en MAP-forekomst i model_fn()
funksjon, og vi kjører MAP-applikasjonen på hver slutningsforespørsel i predict_fn()
funksjon:
from app import AISpleenSegApp
from AHItoDICOMInterface.AHItoDICOM import AHItoDICOM
helper = AHItoDICOM()
def model_fn(model_dir, context): … monai_app_instance = AISpleenSegApp(helper, do_run=False,path="/home/model-server") def predict_fn(input_data, model): with open('/home/model-server/inputImageSets.json', 'w') as f: f.write(json.dumps(input_data)) output_folder = "/home/model-server/output" if not os.path.exists(output_folder): os.makedirs(output_folder) model.run(input='/home/model-server/inputImageSets.json', output=output_folder, workdir='/home/model-server', model='/opt/ml/model/model.ts')
Til påkalle det asynkrone endepunktet, må du laste opp nyttelasten for forespørselen Amazon enkel lagringstjeneste (Amazon S3), som er en JSON-fil som spesifiserer AWS HealthImaging-datalager-ID og ImageSet ID for å kjøre slutning på:
sess = sagemaker.Session()
InputLocation = sess.upload_data('inputImageSets.json', bucket=sess.default_bucket(), key_prefix=prefix, extra_args={"ContentType": "application/json"})
response = runtime_sm_client.invoke_endpoint_async(EndpointName=endpoint_name, InputLocation=InputLocation, ContentType="application/json", Accept="application/json")
output_location = response["OutputLocation"]
Utgangen kan også finnes i Amazon S3.
SageMaker multi-modell sanntidsslutning
SageMaker sanntidsslutning endepunkter oppfyller interaktive krav med lav latens. Dette alternativet kan være vert for flere modeller i én beholder bak ett endepunkt, som er en skalerbar og kostnadseffektiv løsning for å distribuere flere ML-modeller. EN SageMaker multi-modell endepunkt bruker NVIDIA Triton Inference Server med GPU for å kjøre flere dyplæringsmodellslutninger.
I denne delen går vi gjennom hvordan du oppretter og påkaller et flermodellendepunkt tilpasse din egen konklusjonsbeholder i de neste prøve notatbok. Ulike modeller kan serveres i en delt container på samme flåte av ressurser. Flermodellendepunkter reduserer distribusjonsoverhead og skalermodellslutninger basert på trafikkmønstrene til endepunktet. Vi brukte AWS utviklerverktøy herunder Amazon CodeCommit, Amazon CodeBuildog Amazon CodePipeline å bygge den tilpassede beholderen for SageMaker-modellslutning. Vi forberedte en model_handler.py å ta med din egen beholder i stedet for inference.py-filen i forrige eksempel, og implementerte initialize(), preprocess() og inference()-funksjonene:
from app import AISpleenSegApp
from AHItoDICOMInterface.AHItoDICOM import AHItoDICOM
class ModelHandler(object): def __init__(self): self.initialized = False self.shapes = None def initialize(self, context): self.initialized = True properties = context.system_properties model_dir = properties.get("model_dir") gpu_id = properties.get("gpu_id") helper = AHItoDICOM() self.monai_app_instance = AISpleenSegApp(helper, do_run=False, path="/home/model-server/") def preprocess(self, request): inputStr = request[0].get("body").decode('UTF8') datastoreId = json.loads(inputStr)['inputs'][0]['datastoreId'] imageSetId = json.loads(inputStr)['inputs'][0]['imageSetId'] with open('/tmp/inputImageSets.json', 'w') as f: f.write(json.dumps({"datastoreId": datastoreId, "imageSetId": imageSetId})) return '/tmp/inputImageSets.json' def inference(self, model_input): self.monai_app_instance.run(input=model_input, output="/home/model-server/output/", workdir="/home/model-server/", model=os.environ["model_dir"]+"/model.ts")
Etter at containeren er bygget og skjøvet til Amazon Elastic Container Registry (Amazon ECR), du kan lage SageMaker-modell med den, pluss forskjellige modellpakker (tar.gz-filer) i en gitt Amazon S3-bane:
model_name = "DEMO-MONAIDeployModel" + strftime("%Y-%m-%d-%H-%M-%S", gmtime())
model_url = "s3://{}/{}/".format(bucket, prefix)
container = "{}.dkr.ecr.{}.amazonaws.com/{}:dev".format( account_id, region, prefix )
container = {"Image": container, "ModelDataUrl": model_url, "Mode": "MultiModel"}
create_model_response = sm_client.create_model(ModelName=model_name, ExecutionRoleArn=role, PrimaryContainer=container)
Det er bemerkelsesverdig at model_url
her spesifiserer bare banen til en mappe med tar.gz-filer, og du spesifiserer hvilken modellpakke som skal brukes for slutning når du påkaller endepunktet, som vist i følgende kode:
Payload = {"inputs": [ {"datastoreId": datastoreId, "imageSetId": next(iter(imageSetIds))} ]}
response = runtime_sm_client.invoke_endpoint(EndpointName=endpoint_name, ContentType="application/json", Accept="application/json", TargetModel="model.tar.gz", Body=json.dumps(Payload))
Vi kan legge til flere modeller til det eksisterende multi-modellinferensendepunktet uten å måtte oppdatere endepunktet eller opprette et nytt.
Rydd opp
Ikke glem å fullføre Slett vertsressursene trå i lab-3 og lab-4 notatbøker for å slette SageMaker-slutningsendepunktene. Du bør avslå SageMaker notebook-forekomsten for å spare kostnader også. Til slutt kan du enten kalle opp AWS HealthImaging API-funksjonen eller bruke AWS HealthImaging-konsollen til å slette bildesettene og datalageret som er opprettet tidligere:
for s in imageSetIds.keys(): medicalimaging.deleteImageSet(datastoreId, s)
medicalimaging.deleteDatastore(datastoreId)
konklusjonen
I dette innlegget viste vi deg hvordan du oppretter en MAP-kobling til AWS HealthImaging, som kan gjenbrukes i applikasjoner bygget med MONAI Deploy App SDK, for å integrere med og akselerere gjenfinning av bildedata fra en skybasert DICOM-butikk til AI-arbeidsbelastninger for medisinsk bildebehandling . MONAI Deploy SDK kan brukes til å støtte sykehusdrift. Vi demonstrerte også to vertsalternativer for å distribuere MAP AI-applikasjoner på SageMaker i stor skala.
Gå gjennom eksempelnotatbøkene i GitHub repository for å lære mer om hvordan du distribuerer MONAI-applikasjoner på SageMaker med medisinske bilder lagret i AWS HealthImaging. For å vite hva AWS kan gjøre for deg, ta kontakt med en AWS representant.
For ytterligere ressurser, se følgende:
Om forfatterne
Ming (Melvin) Qin er en uavhengig bidragsyter i Healthcare-teamet hos NVIDIA, med fokus på å utvikle et rammeverk og plattform for AI-slutningsapplikasjoner for å bringe AI til arbeidsflyter for medisinsk bildebehandling. Før han begynte i NVIDIA i 2018 som et grunnleggende medlem av Clara, brukte Ming 15 år på å utvikle Radiology PACS og Workflow SaaS som ledende ingeniør/arkitekt hos Stentor Inc., senere kjøpt opp av Philips Healthcare for å danne Enterprise Imaging.
David Bericat er produktsjef for Healthcare hos NVIDIA, hvor han leder arbeidsgruppen Project MONAI Deploy for å bringe AI fra forskning til kliniske implementeringer. Hans lidenskap er å akselerere helseinnovasjon globalt og oversette det til sann klinisk effekt. Tidligere jobbet David hos Red Hat, og implementerte åpen kildekode-prinsipper i skjæringspunktet mellom AI, sky, edge computing og IoT. Hans stolteste øyeblikk inkluderer fotturer til Everest base camp og spille fotball i over 20 år.
Brad Genereaux er Global Lead, Healthcare Alliances hos NVIDIA, hvor han er ansvarlig for utviklerrelasjoner med fokus på medisinsk bildebehandling for å akselerere kunstig intelligens og dyp læring, visualisering, virtualisering og analyseløsninger. Brad evangeliserer den allestedsnærværende bruken og integreringen av sømløse arbeidsflyter for helsetjenester og medisinsk bildebehandling i daglig klinisk praksis, med mer enn 20 års erfaring innen helse-IT.
Gjenge Fu er Healthcare Solutions Architect hos AWS. Han har en doktorgrad i farmasøytisk vitenskap fra University of Mississippi og har over 10 års teknologi- og biomedisinsk forskningserfaring. Han er lidenskapelig opptatt av teknologi og virkningen den kan ha på helsevesenet.
JP Leger er en senior løsningsarkitekt som støtter akademiske medisinske sentre og arbeidsflyter for medisinsk bildebehandling ved AWS. Han har over 20 års ekspertise innen programvareutvikling, helse-IT og medisinsk bildebehandling, med lang erfaring med å bygge systemer for ytelse, skalerbarhet og sikkerhet i distribuerte distribusjoner av store datavolumer i lokaler, i skyen og hybrid med analyse og AI .
Chris Hafey er en hovedløsningsarkitekt hos Amazon Web Services. Han har over 25 års erfaring i medisinsk bildebehandlingsindustri og spesialiserer seg på å bygge skalerbare høyytelsessystemer. Han er skaperen av det populære CornerstoneJS åpen kildekode-prosjektet, som driver den populære OHIF åpen kildekode zero footprint viewer. Han bidro til DICOMweb-spesifikasjonen og fortsetter å jobbe for å forbedre ytelsen for nettbasert visning.
- 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. Karbon, CleanTech, Energi, Miljø, Solenergi, Avfallshåndtering. Tilgang her.
- PlatoHelse. Bioteknologisk og klinisk etterretning. Tilgang her.
- kilde: https://aws.amazon.com/blogs/machine-learning/build-a-medical-imaging-ai-inference-pipeline-with-monai-deploy-on-aws/
- : har
- :er
- :ikke
- :hvor
- $OPP
- 1
- 10
- 100
- 12
- 15 år
- 15%
- 20
- 20 år
- 200
- 2018
- 25
- 3d
- 7
- 8
- a
- Om oss
- akademisk
- akselerere
- akselerer
- adgang
- tilgjengelig
- Logg inn
- ervervet
- tvers
- legge til
- Ytterligere
- Adopsjon
- Fordel
- rimelig
- AI
- AI-modeller
- Varsler
- algoritmer
- Alle
- allianser
- tillate
- også
- Amazon
- Amazon Web Services
- an
- analytics
- og
- api
- API-tilgang
- APIer
- app
- Søknad
- søknader
- arkitektur
- ER
- kunstig
- kunstig intelligens
- AS
- At
- attributter
- Automatisk
- tilgjengelig
- AWS
- basen
- basert
- BE
- før du
- bak
- biomedisinsk
- kroppen
- både
- brad
- gjennombrudd
- bringe
- bygge
- Bygning
- bygget
- innebygd
- by
- ring
- Camp
- CAN
- hvilken
- saker
- sentrum
- Sentre
- Clara
- klasse
- Klinisk
- Cloud
- kode
- Kom
- fullføre
- består
- databehandling
- Konfigurasjon
- Tilkobling
- Konsoll
- konsortium
- kontakt
- Container
- inneholder
- innhold
- kontekst
- fortsetter
- bidratt
- bidragsyter
- Kostnad
- kostnadsbesparelser
- kostnadseffektiv
- Kostnader
- dekke
- medskrevet
- skape
- opprettet
- skaperen
- tilpasset
- dato
- Datasenter
- David
- dyp
- dyp læring
- demonstrere
- demonstrert
- utplassere
- utplasserings
- distribusjon
- distribusjoner
- dev
- utviklet
- Utvikler
- utviklere
- utvikle
- forskjellig
- distribueres
- do
- Docker
- dokument
- ned
- Tidligere
- Edge
- kanten beregning
- effektiv
- enten
- ellers
- muliggjør
- ende til ende
- Endpoint
- Ingeniørarbeid
- Enterprise
- miljøer
- Tilsvarende
- everest
- Hver
- hverdagen
- eksempel
- Unntatt
- eksisterende
- erfaring
- ekspertise
- utforske
- omfattende
- Omfattende erfaring
- ekstremt
- falsk
- FAST
- filet
- Filer
- Endelig
- Først
- FLÅTE
- Fokus
- fokuserte
- følge
- etter
- følger
- Fotspor
- Til
- skjema
- format
- funnet
- grunnleggelsen
- Rammeverk
- fra
- fu
- fullt
- funksjon
- funksjonalitet
- funksjoner
- GitHub
- gitt
- Global
- Globalt
- GPU
- Gruppe
- hatt
- Ha
- å ha
- he
- overskrifter
- Helse
- helsetjenester
- her.
- høy ytelse
- svært
- hans
- holder
- sykehus
- vert
- vert
- Hosting
- Hvordan
- Hvordan
- HTML
- http
- HTTPS
- Hybrid
- ID
- ideell
- Identitet
- if
- illustrerer
- bilde
- bilder
- Imaging
- Påvirkning
- implementert
- implementere
- importere
- import
- bedre
- in
- Inc.
- inkludere
- inkludert
- inkluderer
- Inkludert
- uavhengig
- industri
- Innovasjon
- inngang
- innganger
- installere
- f.eks
- i stedet
- integrere
- integrering
- Intelligens
- interaktiv
- kryss
- inn
- IOT
- Irland
- IT
- DET ER
- Jobb
- sammenføyning
- jpg
- JSON
- nøkkel
- Vet
- stor
- Ventetid
- seinere
- føre
- ledere
- Fører
- LÆRE
- læring
- linje
- laste
- loader
- lasting
- lokal
- Lang
- maskin
- maskinlæring
- Flertall
- gjøre
- fikk til
- leder
- administrerende
- kart
- Kart
- medisinsk
- Møt
- medlem
- metadata
- Metrics
- minutter
- ML
- Mote
- modell
- modeller
- Moduler
- Moments
- Overvåke
- mer
- Multi-Model endepunkt
- flere
- innfødt
- Trenger
- nettverk
- nettverk
- Ny
- Nei.
- none
- nord
- bærbare
- bemerkelsesverdig
- Nvidia
- objekt
- of
- Tilbud
- on
- ONE
- bare
- åpen
- åpent nettverk
- åpen kildekode
- Drift
- operatør
- operatører
- optimalisert
- Alternativ
- alternativer
- or
- Oregon
- OS
- Annen
- produksjon
- enn
- egen
- pakke
- pakker
- emballasje
- par
- Parallel
- lidenskap
- lidenskapelig
- banen
- mønstre
- ytelse
- tillatelse
- Pharmaceutical
- phd
- rørledning
- pixel
- plattform
- plato
- Platon Data Intelligence
- PlatonData
- spiller
- i tillegg til
- Populær
- Post
- powered
- krefter
- praksis
- Spådommer
- forberedt
- forrige
- tidligere
- Principal
- prinsipper
- prosess
- Bearbeidet
- Prosesser
- prosessering
- Produkt
- Produktsjef
- Produksjon
- prosjekt
- egenskaper
- gir
- presset
- Python
- pytorch
- sanntids
- Reality
- motta
- Rød
- Red Hat
- redusere
- referere
- region
- regioner
- relasjoner
- representasjon
- anmode
- forespørsler
- Krav
- Krever
- forskning
- forskere
- Ressurser
- svar
- ansvarlig
- retur
- gjenbruk
- Kjør
- rennende
- s
- SaaS
- sagemaker
- SageMaker Inference
- samme
- Spar
- Besparelser
- skalerbarhet
- skalerbar
- Skala
- skalering
- Vitenskap
- SDK
- sømløs
- Seksjon
- sikkerhet
- segmentering
- utvalg
- SELV
- senior
- Serien
- servert
- tjeneste
- Tjenester
- sett
- innstilling
- flere
- figurer
- delt
- bør
- viste
- vist
- Enkelt
- størrelser
- problemfritt
- Fotball
- Software
- software engineering
- løsning
- Solutions
- kilde
- spesialisert
- spesifikasjon
- brukt
- standarder
- Trinn
- Steps
- lagring
- oppbevare
- lagret
- String
- slik
- støtte
- Støtte
- sydney
- Systemer
- tar
- lag
- Teknologi
- Testing
- enn
- Det
- De
- deres
- Dem
- deretter
- Der.
- Disse
- denne
- Gjennom
- ganger
- til
- sammen
- verktøy
- mot
- trafikk
- Triton
- sant
- prøve
- SVING
- to
- allestedsnærværende
- universitet
- Oppdater
- bruke
- brukt
- Bruker
- bruker
- ved hjelp av
- verktøyet
- variasjon
- versjoner
- ser
- Virginia
- syn
- visualisering
- visualisere
- volumer
- W
- gå
- ønsker
- we
- web
- webtjenester
- Web-basert
- VI VIL
- Hva
- når
- hvilken
- vil
- med
- innenfor
- uten
- Arbeid
- arbeidet
- arbeidsflyt
- arbeidsflyt
- arbeid
- Arbeidsgruppe
- år
- Du
- Din
- zephyrnet
- null