Această postare este scrisă împreună cu Ming (Melvin) Qin, David Bericat și Brad Genereaux de la NVIDIA.
Cercetătorii și dezvoltatorii AI pentru imagistica medicală au nevoie de un cadru de întreprindere scalabil pentru a construi, implementa și integra aplicațiile lor AI. AWS și NVIDIA s-au unit pentru a transforma această viziune în realitate. AWS, NVIDIA și alți parteneri construiți aplicații și soluții pentru a face asistența medicală mai accesibilă, mai accesibilă și mai eficientă prin accelerarea conectivității în cloud a imaginilor întreprinderii. MONAI Deploy este unul dintre modulele cheie din interior MONAI (Medical Open Network for Artificial Intelligence) dezvoltat de un consorțiu de lideri din mediul academic și din industrie, inclusiv NVIDIA. AWS HealthImaging (AHI) este un magazin de imagini medicale eligibil pentru HIPAA, foarte scalabil, performant și rentabil. Am dezvoltat un conector MONAI Deploy la AHI pentru a integra aplicații AI de imagistică medicală cu latențe de recuperare a imaginilor sub secunde la scară alimentate de API-uri native din cloud. Modelele și aplicațiile MONAI AI pot fi găzduite pe Amazon SageMaker, care este un serviciu complet gestionat pentru a implementa modele de învățare automată (ML) la scară. SageMaker se ocupă de configurarea și gestionarea instanțelor pentru inferență și oferă metrici și jurnale încorporate pentru punctele finale pe care le puteți utiliza pentru a monitoriza și a primi alerte. De asemenea, oferă o varietate de Instanțele GPU NVIDIA pentru inferența ML, precum și pentru mai multe opțiuni de implementare a modelului cu scalare automată, inclusiv inferență în timp real, inferență fără server, inferență asincronă, și transformarea lotului.
În această postare, demonstrăm cum să implementăm un pachet de aplicații MONAI (MAP) cu conectorul la AWS HealthImaging, folosind un punct final multi-model SageMaker pentru inferență în timp real și inferență asincronă. Aceste două opțiuni acoperă majoritatea cazurilor de utilizare a conductelor de inferență pentru imagistica medicală în timp aproape real.
Prezentare generală a soluțiilor
Următoarea diagramă ilustrează arhitectura soluției.
Cerințe preliminare
Parcurgeți următorii pași prealabil:
- Utilizați un cont AWS cu una dintre următoarele regiuni, unde este disponibil AWS HealthImaging: North Virginia (
us-east-1
), Oregon (us-west-2
), Irlanda (eu-west-1
), și Sydney (ap-southeast-2
). - Creați o Amazon SageMaker Studio domeniul și profilul utilizatorului cu Gestionarea identității și accesului AWS (IAM) pentru a accesa AWS HealthImaging.
- Activați extensia JupyterLab v3 și instalați Imjoy-jupyter-extension dacă doriți să vizualizați imagini medicale pe notebook-ul SageMaker în mod interactiv folosind itkwidgets.
Conector MAP la AWS HealthImaging
AWS HealthImaging importă fișiere DICOM P10 și le convertește în ImageSets, care sunt o reprezentare optimizată a unei serii DICOM. AHI oferă acces API la metadatele ImageSet și la ImageFrames. Metadatele conțin toate atributele DICOM dintr-un document JSON. ImageFrames sunt returnate codificate în JPEG2000 cu randament ridicat (HTJ2K) format fără pierderi, care poate fi decodat extrem de rapid. Seturile de imagini pot fi preluate utilizând Interfața liniei de comandă AWS (AWS CLI) sau SDK-uri AWS.
MONAI este un cadru AI de imagistică medicală care duce progresele cercetării și aplicațiile AI în impact clinic. MONAI Deploy este conducta de procesare care permite fluxul de lucru end-to-end, inclusiv ambalarea, testarea, implementarea și rularea aplicațiilor AI pentru imagistica medicală în producția clinică. Acesta cuprinde MONAI Implementați SDK pentru aplicații, MONAI Deploy Express, Manager de flux de lucru, și Gateway Informatică. SDK-ul MONAI Deploy App oferă algoritmi gata de utilizare și un cadru pentru a accelera construirea de aplicații AI pentru imagistica medicală, precum și instrumente utilitare pentru a împacheta aplicația într-un container MAP. Funcționalitățile încorporate bazate pe standarde din SDK-ul aplicației permit MAP să se integreze fără probleme în rețelele IT de sănătate, ceea ce necesită utilizarea unor standarde precum DICOM, HL7 și FHIR și în mediile de centre de date și cloud. MAP-urile pot folosi atât operatori predefiniti, cât și personalizați pentru încărcarea imaginilor DICOM, selectarea seriei, inferența modelului și postprocesare
Am dezvoltat un Modul Python folosind AWS HealthImaging Python SDK Boto3. Puteți să-l instalați prin pip și să utilizați funcția de ajutor pentru a prelua instanțe DICOM Service-Object Pair (SOP) după cum urmează:
!pip install -q AHItoDICOMInterface
from AHItoDICOMInterface.AHItoDICOM import AHItoDICOM
helper = AHItoDICOM()
instances = helper.DICOMizeImageSet(datastore_id=datastoreId , image_set_id=next(iter(imageSetIds)))
Instanțele SOP de ieșire pot fi vizualizate utilizând vizualizatorul interactiv de imagini medicale 3D itkwidgets în următoarele caiet. AHItoDICOM clasa profită de mai multe procese pentru a prelua cadre de pixeli de la AWS HealthImaging în paralel și decodifica il Blob-uri binare HTJ2K folosind Biblioteca Python OpenJPEG. ImageSetId-urile provin din fișierele de ieșire ale unei anumite sarcini de import AWS HealthImaging. Având în vedere DatastoreId și import JobId, puteți prelua ImageSetId, care este echivalent cu UID-ul instanței din seria DICOM, după cum urmează:
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
Cu ImageSetId, puteți prelua metadatele antetului DICOM și pixelii imaginii separat, folosind funcțiile native AWS HealthImaging API. The Agregate exportatoare DICOM anteturile DICOM și pixelii imaginii în Pydicom setul de date, care poate fi procesat de către Operator de încărcare de date MAP DICOM. Folosind funcția DICOMizeImageSet(), am creat un conector pentru a încărca date de imagine de la AWS HealthImaging, pe baza MAP Operator de încărcare de date DICOM:
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'])
În codul precedent, ahi_client
este o instanță a clasei de exportator AHItoDICOM DICOM, cu funcții de recuperare a datelor ilustrate. Am inclus acest nou operator de încărcare de date într-un Aplicație AI de segmentare a splinei 3D creată de MONAI Deploy App SDK. Puteți explora mai întâi cum să creați și să rulați această aplicație pe o instanță locală de notebook, apoi implementați această aplicație MAP în punctele finale de inferență gestionate de SageMaker.
Inferență asincronă SageMaker
Un SageMaker inferență asincronă Punctul final este utilizat pentru solicitări cu dimensiuni mari de încărcare utilă (până la 1 GB), timpi lungi de procesare (până la 15 minute) și cerințe de latență aproape în timp real. Când nu există solicitări de procesat, această opțiune de implementare poate reduce numărul de instanțe la zero pentru economii de costuri, ceea ce este ideal pentru sarcinile de lucru de inferență ML pentru imagistica medicală. Urmați pașii din caiet de probă pentru a crea și invoca punctul final de inferență asincron SageMaker. La creați un punct final de inferență asincron, mai întâi va trebui să creați un model SageMaker și o configurație a punctului final. Pentru a crea un model SageMaker, va trebui să încărcați un pachet model.tar.gz cu a structura de directoare definită într-un container Docker. Pachetul model.tar.gz include un fișier model.ts de segmentare a splinei pre-antrenat și un fișier inference.py personalizat. Am folosit un container preconstruit cu versiunile de cadru Python 3.8 și PyTorch 1.12.1 pentru a încărca modelul și a rula predicții.
În personalizat deducere.py fișier, instanțiem o clasă de ajutor AHItoDICOM din AHItoDICOMInterface și o folosim pentru a crea o instanță MAP în model_fn()
funcția și rulăm aplicația MAP la fiecare cerere de inferență din predict_fn()
funcţie:
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')
La invocați punctul final asincron, va trebui să încărcați sarcina utilă de intrare a cererii la Serviciul Amazon de stocare simplă (Amazon S3), care este un fișier JSON care specifică ID-ul depozitului de date AWS HealthImaging și ID-ul ImageSet pentru a rula inferența:
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"]
Ieșirea poate fi găsită și în Amazon S3.
Inferență în timp real cu mai multe modele SageMaker
SageMaker inferență în timp real punctele finale îndeplinesc cerințe interactive, cu latență scăzută. Această opțiune poate găzdui mai multe modele într-un container în spatele unui punct final, care este o soluție scalabilă și rentabilă pentru implementarea mai multor modele ML. A Punctul final cu mai multe modele SageMaker utilizează serverul de inferință NVIDIA Triton cu GPU pentru a rula mai multe inferențe de model de învățare profundă.
În această secțiune, vom parcurge cum să creați și să invocați un punct final cu mai multe modele adaptarea propriului container de inferență în cele ce urmează caiet de probă. Diferite modele pot fi servite într-un container comun pe aceeași flotă de resurse. Punctele finale cu mai multe modele reduc costul general de implementare și inferența modelelor la scară bazate pe modelele de trafic către punctul final. Noi am folosit Instrumente pentru dezvoltatori AWS inclusiv Amazon CodeCommit, Amazon CodeBuild, și Amazon CodePipeline a construi containerul personalizat pentru inferența modelului SageMaker. Am pregătit o model_handler.py pentru a vă aduce propriul container în locul fișierului inference.py din exemplul anterior și a implementat funcțiile initialize(), preprocess() și inference():
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")
După ce containerul este construit și împins la Registrul Amazon de containere elastice (Amazon ECR), puteți crea modelul SageMaker cu acesta, plus pachete de model diferite (fișiere tar.gz) într-o cale Amazon S3 dată:
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)
Este de remarcat faptul că model_url
aici specifică doar calea către un folder de fișiere tar.gz și specificați ce pachet model să utilizați pentru inferență atunci când invocați punctul final, așa cum se arată în următorul cod:
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))
Putem adăuga mai multe modele la punctul final de inferență multimodel existent fără a fi necesar să actualizăm punctul final sau să creăm unul nou.
A curăța
Nu uitați să completați Ștergeți resursele de găzduire pas în Lab-3 și Lab-4 notebook-uri pentru a șterge punctele finale de inferență SageMaker. Ar trebui să refuzați instanța de notebook SageMaker pentru a economisi și costuri. În cele din urmă, puteți fie să apelați funcția API AWS HealthImaging, fie să utilizați consola AWS HealthImaging pentru a șterge seturile de imagini și depozitul de date creat anterior:
for s in imageSetIds.keys(): medicalimaging.deleteImageSet(datastoreId, s)
medicalimaging.deleteDatastore(datastoreId)
Concluzie
În această postare, v-am arătat cum să creați un conector MAP la AWS HealthImaging, care este reutilizabil în aplicațiile construite cu MONAI Deploy App SDK, pentru a integra și a accelera recuperarea datelor de imagine dintr-un magazin DICOM nativ în cloud la sarcinile de lucru AI pentru imagistica medicală. . SDK-ul MONAI Deploy poate fi utilizat pentru a sprijini operațiunile spitalului. De asemenea, am demonstrat două opțiuni de găzduire pentru a implementa aplicații MAP AI pe SageMaker la scară.
Parcurgeți exemplele de caiete din GitHub depozit pentru a afla mai multe despre cum să implementați aplicații MONAI pe SageMaker cu imagini medicale stocate în AWS HealthImaging. Pentru a afla ce poate face AWS pentru dvs., contactați an Reprezentant AWS.
Pentru resurse suplimentare, consultați următoarele:
Despre Autori
Ming (Melvin) Qin este un colaborator independent al echipei de asistență medicală de la NVIDIA, concentrat pe dezvoltarea unui cadru de aplicații de inferență AI și a unei platforme pentru a aduce AI în fluxurile de lucru pentru imagistica medicală. Înainte de a se alătura NVIDIA în 2018 ca membru fondator al Clara, Ming a petrecut 15 ani dezvoltând Radiology PACS și Workflow SaaS ca inginer/arhitect principal la Stentor Inc., achiziționat ulterior de Philips Healthcare pentru a forma Enterprise Imaging.
David Bericat este manager de produs pentru Healthcare la NVIDIA, unde conduce grupul de lucru Project MONAI Deploy pentru a aduce AI de la cercetare la implementări clinice. Pasiunea lui este să accelereze inovația în domeniul sănătății la nivel global, transpunându-l într-un impact clinic real. Anterior, David a lucrat la Red Hat, implementând principii open source la intersecția dintre AI, cloud, edge computing și IoT. Cele mai mândri momente ale sale includ drumeția la tabăra de bază Everest și jocul de fotbal de peste 20 de ani.
Brad Genereaux este Global Lead, Healthcare Alliances la NVIDIA, unde este responsabil pentru relațiile cu dezvoltatorii, cu accent pe imagistica medicală pentru a accelera inteligența artificială și soluțiile de deep learning, vizualizare, virtualizare și analiză. Brad evanghelizează adoptarea și integrarea omniprezentă a fluxurilor de lucru fără întreruperi de asistență medicală și imagistică medicală în practica clinică de zi cu zi, cu peste 20 de ani de experiență în IT asistență medicală.
Gang Fu este arhitect de soluții de asistență medicală la AWS. El deține un doctorat în Științe Farmaceutice de la Universitatea din Mississippi și are peste 10 ani de experiență în tehnologie și cercetare biomedicală. Este pasionat de tehnologie și de impactul pe care îl poate avea asupra sănătății.
JP Leger este un arhitect senior de soluții care sprijină centrele medicale academice și fluxurile de lucru pentru imagistica medicală la AWS. Are peste 20 de ani de experiență în inginerie software, IT pentru asistență medicală și imagistica medicală, cu o experiență vastă în arhitectura de sisteme pentru performanță, scalabilitate și securitate în implementări distribuite de volume mari de date la sediu, în cloud și hibride cu analize și AI. .
Chris Hafey este arhitect principal de soluții la Amazon Web Services. Are o experiență de peste 25 de ani în industria imagistică medicală și este specializat în construirea de sisteme scalabile de înaltă performanță. El este creatorul popularului proiect open source CornerstoneJS, care alimentează popularul vizualizator OHIF open source zero footprint. El a contribuit la specificația DICOMweb și continuă să lucreze pentru îmbunătățirea performanței acesteia pentru vizualizarea pe web.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- PlatoData.Network Vertical Generative Ai. Împuterniciți-vă. Accesați Aici.
- PlatoAiStream. Web3 Intelligence. Cunoștințe amplificate. Accesați Aici.
- PlatoESG. carbon, CleanTech, Energie, Mediu inconjurator, Solar, Managementul deșeurilor. Accesați Aici.
- PlatoHealth. Biotehnologie și Inteligență pentru studii clinice. Accesați Aici.
- Sursa: https://aws.amazon.com/blogs/machine-learning/build-a-medical-imaging-ai-inference-pipeline-with-monai-deploy-on-aws/
- :are
- :este
- :nu
- :Unde
- $UP
- 1
- 10
- 100
- 12
- ani 15
- 15%
- 20
- ani 20
- 200
- 2018
- 25
- 3d
- 7
- 8
- a
- Despre Noi
- academic
- accelera
- accelerarea
- acces
- accesibil
- Cont
- dobândite
- peste
- adăuga
- Suplimentar
- Adoptare
- Avantaj
- accesibil
- AI
- Modele AI
- Alerte
- algoritmi
- TOATE
- alianţe
- permite
- de asemenea
- Amazon
- Amazon Web Services
- an
- Google Analytics
- și
- api
- Acces API
- API-uri
- aplicaţia
- aplicație
- aplicatii
- arhitectură
- SUNT
- artificial
- inteligență artificială
- AS
- At
- atribute
- Automat
- disponibil
- AWS
- de bază
- bazat
- BE
- înainte
- în spatele
- biomedicale
- corp
- atât
- cui fără floare
- descoperiri
- aduce
- construi
- Clădire
- construit
- construit-in
- by
- apel
- Tabără
- CAN
- pasă
- cazuri
- Centru
- Centre
- Clara
- clasă
- clinic
- Cloud
- cod
- cum
- Completă
- cuprinde
- tehnica de calcul
- Configuraţie
- Suport conectare
- Consoleze
- consorţiu
- contactați-ne
- Recipient
- conține
- conținut
- context
- continuă
- Contribuit
- contribuabil
- A costat
- economii
- cost-eficiente
- Cheltuieli
- acoperi
- coscris
- crea
- a creat
- creator
- personalizate
- de date
- Data Center
- David
- adânc
- învățare profundă
- demonstra
- demonstrat
- implementa
- Implementarea
- desfășurarea
- implementări
- dev
- dezvoltat
- Dezvoltator
- Dezvoltatorii
- în curs de dezvoltare
- diferit
- distribuite
- do
- Docher
- document
- jos
- Mai devreme
- Margine
- marginea de calcul
- eficient
- oricare
- altfel
- permite
- un capăt la altul
- Punct final
- Inginerie
- Afacere
- medii
- Echivalent
- everest
- Fiecare
- de fiecare zi
- exemplu
- Cu excepția
- existent
- experienţă
- expertiză
- explora
- extensiv
- Experiență vastă
- extrem
- fals
- FAST
- Fișier
- Fişiere
- În cele din urmă
- First
- FLOTA
- Concentra
- concentrat
- urma
- următor
- urmează
- urmă
- Pentru
- formă
- format
- găsit
- fondator
- Cadru
- din
- fu
- complet
- funcţie
- funcționalități
- funcții
- GitHub
- dat
- Caritate
- La nivel global
- GPU
- grup
- pălărie
- Avea
- având în
- he
- anteturile
- Sănătate
- de asistență medicală
- aici
- performanta ridicata
- extrem de
- lui
- deține
- spital
- gazdă
- găzduit
- găzduire
- Cum
- Cum Pentru a
- HTML
- http
- HTTPS
- Hibrid
- ID
- ideal
- Identitate
- if
- ilustrează
- imagine
- imagini
- Imaging
- Impactul
- implementat
- Punere în aplicare a
- import
- importurile
- îmbunătățirea
- in
- Inc
- include
- inclus
- include
- Inclusiv
- independent
- industrie
- Inovaţie
- intrare
- intrări
- instala
- instanță
- in schimb
- integra
- integrare
- Inteligență
- interactiv
- intersecție
- în
- IoT
- Irlanda
- IT
- ESTE
- Loc de munca
- aderarea
- jpg
- JSON
- Cheie
- Cunoaște
- mare
- Latență
- mai tarziu
- conduce
- Liderii
- Conduce
- AFLAȚI
- învăţare
- Linie
- încărca
- încărcător
- încărcare
- local
- Lung
- maşină
- masina de învățare
- Majoritate
- face
- gestionate
- manager
- de conducere
- Hartă
- Harta
- medical
- Întâlni
- membru
- Metadata
- Metrici
- minute
- ML
- mod
- model
- Modele
- Module
- Momente
- monitor
- mai mult
- Punct final cu mai multe modele
- multiplu
- nativ
- Nevoie
- reţea
- rețele
- Nou
- Nu.
- Nici unul
- North
- caiet
- remarcabil
- Nvidia
- obiect
- of
- promoții
- on
- ONE
- afară
- deschide
- rețea deschisă
- open-source
- Operațiuni
- operator
- Operatorii
- optimizate
- Opțiune
- Opţiuni
- or
- Oregon
- OS
- Altele
- producție
- peste
- propriu
- pachet
- ofertele
- ambalaje
- pereche
- Paralel
- pasiune
- pasionat
- cale
- modele
- performanță
- permisiune
- Farmaceutic
- PhD
- conducte
- Pixel
- platformă
- Plato
- Informații despre date Platon
- PlatoData
- joc
- la care se adauga
- Popular
- Post
- alimentat
- competenţelor
- practică
- Predictii
- pregătit
- precedent
- în prealabil
- Principal
- Principiile
- proces
- Procesat
- procese
- prelucrare
- Produs
- manager de produs
- producere
- proiect
- proprietăţi
- furnizează
- împins
- Piton
- pirtorh
- în timp real
- Realitate
- a primi
- Roșu
- Red Hat
- reduce
- trimite
- regiune
- regiuni
- relaţii
- reprezentare
- solicita
- cereri de
- Cerinţe
- Necesită
- cercetare
- cercetători
- Resurse
- răspuns
- responsabil
- reveni
- reutilizabile
- Alerga
- funcţionare
- s
- SaaS
- sagemaker
- SageMaker Inference
- acelaşi
- Economisiți
- Economie
- scalabilitate
- scalabil
- Scară
- scalare
- Ştiinţă
- sdk
- fără sudură
- Secțiune
- securitate
- segmentarea
- selecţie
- SELF
- senior
- serie
- servit
- serviciu
- Servicii
- Seturi
- instalare
- câteva
- forme
- comun
- să
- a arătat
- indicat
- simplu
- dimensiuni
- lin
- Fotbal
- Software
- Inginerie software
- soluţie
- soluţii
- Sursă
- specializată
- specificație
- uzat
- standarde
- Pas
- paşi
- depozitare
- stoca
- stocate
- Şir
- astfel de
- a sustine
- De sprijin
- sydney
- sisteme
- ia
- echipă
- Tehnologia
- Testarea
- decât
- acea
- lor
- Lor
- apoi
- Acolo.
- Acestea
- acest
- Prin
- ori
- la
- împreună
- Unelte
- față de
- trafic
- Triton
- adevărat
- încerca
- ÎNTORCĂ
- Două
- omniprezent
- universitate
- Actualizează
- utilizare
- utilizat
- Utilizator
- utilizări
- folosind
- utilitate
- varietate
- Versiunile
- vizionează
- Virginia
- viziune
- vizualizare
- imagina
- volume
- W
- umbla
- vrea
- we
- web
- servicii web
- bazat pe web
- BINE
- Ce
- cand
- care
- voi
- cu
- în
- fără
- Apartamente
- a lucrat
- flux de lucru
- fluxuri de lucru
- de lucru
- Grup de lucru
- ani
- Tu
- Ta
- zephyrnet
- zero