Aceasta este o postare pentru invitați scrisă împreună cu echipa de conducere a Iambic Therapeutics.
Terapeutică iambică este o companie startup de descoperire a medicamentelor cu misiunea de a crea tehnologii inovatoare bazate pe inteligență artificială pentru a aduce medicamente mai bune pacienților cu cancer, mai rapid.
Instrumentele noastre avansate de inteligență artificială (AI) generativă și predictivă ne permit să căutăm spațiul vast al posibilelor molecule de medicamente mai rapid și mai eficient. Tehnologiile noastre sunt versatile și aplicabile în zonele terapeutice, clasele de proteine și mecanismele de acțiune. Pe lângă crearea de instrumente AI diferențiate, am stabilit o platformă integrată care îmbină software-ul AI, datele bazate pe cloud, infrastructura de calcul scalabilă și capabilitățile de chimie și biologie de mare debit. Platforma permite atât AI-ul nostru – prin furnizarea de date pentru a ne rafina modelele – cât și este activată de aceasta, valorificând oportunitățile de luare a deciziilor și procesare automată a datelor.
Măsurăm succesul prin capacitatea noastră de a produce candidați clinici superiori pentru a răspunde nevoilor urgente ale pacienților, cu o viteză fără precedent: am avansat de la lansarea programului la candidați clinici în doar 24 de luni, mult mai rapid decât concurenții noștri.
În această postare, ne concentrăm asupra modului în care am folosit Karpenter on Serviciul Amazon Elastic Kubernetes (Amazon EKS) pentru a extinde instruirea și inferența AI, care sunt elemente de bază ale platformei de descoperire Iambic.
Nevoia de instruire și inferență scalabile AI
În fiecare săptămână, Iambic efectuează inferențe AI pe zeci de modele și milioane de molecule, servind două cazuri de utilizare principale:
- Chimiștii medicinali și alți oameni de știință folosesc aplicația noastră web, Insight, pentru a explora spațiul chimic, pentru a accesa și interpreta date experimentale și pentru a prezice proprietățile moleculelor nou proiectate. Toate aceste lucrări sunt realizate interactiv în timp real, creând o nevoie de inferență cu latență scăzută și debit mediu.
- În același timp, modelele noastre AI generative proiectează automat molecule care vizează îmbunătățirea a numeroase proprietăți, căutând milioane de candidați și necesitând un debit enorm și o latență medie.
Ghidată de tehnologiile AI și vânătorii experți de droguri, platforma noastră experimentală generează mii de molecule unice în fiecare săptămână și fiecare este supusă mai multor teste biologice. Punctele de date generate sunt procesate automat și utilizate pentru a ajusta modelele noastre AI în fiecare săptămână. Inițial, reglarea fină a modelului nostru a durat ore de procesare, așa că era imperativ un cadru pentru reglarea fină a modelului pe GPU.
Modelele noastre de învățare profundă au cerințe non-triviale: au dimensiuni de gigaocteți, sunt numeroase și eterogene și necesită GPU-uri pentru inferență rapidă și reglare fină. În ceea ce privește infrastructura cloud, aveam nevoie de un sistem care să ne permită să accesăm GPU-uri, să creștem și să reducem rapid pentru a gestiona sarcinile de lucru eterogene și înțepenite și să rulăm imagini Docker mari.
Am vrut să construim un sistem scalabil pentru a sprijini instruirea și inferența AI. Folosim Amazon EKS și căutăm cea mai bună soluție pentru scalarea automată a nodurilor noastre de lucru. Am ales Karpenter pentru scalarea automată a nodului Kubernetes din mai multe motive:
- Ușurință de integrare cu Kubernetes, folosind semantica Kubernetes pentru a defini cerințele nodurilor și specificațiile podului pentru scalare
- Scalare-out cu latență scăzută a nodurilor
- Ușurință de integrare cu infrastructura noastră ca instrumente de cod (Terraform)
Furnizorii de noduri acceptă integrarea fără efort cu Amazon EKS și alte resurse AWS, cum ar fi Cloud Elastic de calcul Amazon (Amazon EC2) instanțe și Magazin Amazon Elastic Block volumele. Semantica Kubernetes folosită de furnizori acceptă programarea direcționată folosind constructe Kubernetes, cum ar fi taints sau toleranțe și specificații de afinitate sau anti-afinitate; de asemenea, facilitează controlul asupra numărului și tipurilor de instanțe GPU care pot fi programate de Karpenter.
Prezentare generală a soluțiilor
În această secțiune, prezentăm o arhitectură generică care este similară cu cea pe care o folosim pentru propriile sarcini de lucru, care permite implementarea elastică a modelelor folosind scalarea automată eficientă, bazată pe metrici personalizate.
Următoarea diagramă ilustrează arhitectura soluției.
Arhitectura implementează a serviciu simplu într-un pod Kubernetes într-un cluster EKS. Aceasta ar putea fi o inferență de model, simulare de date sau orice alt serviciu containerizat, accesibil prin cerere HTTP. Serviciul este expus în spatele unei utilizări reverse-proxy Traefik. Proxy-ul invers colectează valori despre apelurile către serviciu și le expune printr-un API standard pentru valori. Prometeu. Autoscaler-ul controlat de evenimente Kubernetes (KEDA) este configurat pentru a scala automat numărul de poduri de servicii, pe baza valorilor personalizate disponibile în Prometheus. Aici folosim numărul de solicitări pe secundă ca valoare personalizată. Aceeași abordare arhitecturală se aplică dacă alegeți o valoare diferită pentru volumul de lucru.
Karpenter monitorizează eventualele poduri în așteptare care nu pot rula din cauza lipsei de resurse suficiente în cluster. Dacă astfel de poduri sunt detectate, Karpenter adaugă mai multe noduri la cluster pentru a furniza resursele necesare. În schimb, dacă există mai multe noduri în cluster decât ceea ce este necesar pentru podurile programate, Karpenter elimină unele dintre nodurile de lucru și podurile sunt reprogramate, consolidându-le pe mai puține instanțe. Numărul de solicitări HTTP pe secundă și numărul de noduri pot fi vizualizate folosind a grafana bord. Pentru a demonstra scalarea automată, rulăm unul sau mai multe poduri simple generatoare de încărcare, care trimit cereri HTTP serviciului folosind răsuci.
Implementarea soluției
În descriere pas cu pas, folosim AWS Cloud9 ca mediu de implementare a arhitecturii. Acest lucru permite ca toți pașii să fie finalizați dintr-un browser web. De asemenea, puteți implementa soluția de pe un computer local sau de pe o instanță EC2.
Pentru a simplifica implementarea și pentru a îmbunătăți reproductibilitatea, respectăm principiile do-cadru și structura șablon dependent de docker. Clonăm aws-do-eks proiect și, folosind Docher, construim o imagine container care este echipată cu instrumentele și scripturile necesare. În cadrul containerului, parcurgem toți pașii procedurii complete, de la crearea unui cluster EKS cu Karpenter până la scalare. Instanțele EC2.
Pentru exemplul din această postare, folosim următoarele Manifestul clusterului EKS:
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: do-eks-yaml-karpenter
version: '1.28'
region: us-west-2
tags:
karpenter.sh/discovery: do-eks-yaml-karpenter
iam:
withOIDC: true
addons:
- name: aws-ebs-csi-driver
version: v1.26.0-eksbuild.1
wellKnownPolicies:
ebsCSIController: true
managedNodeGroups:
- name: c5-xl-do-eks-karpenter-ng
instanceType: c5.xlarge
instancePrefix: c5-xl
privateNetworking: true
minSize: 0
desiredCapacity: 2
maxSize: 10
volumeSize: 300
iam:
withAddonPolicies:
cloudWatch: true
ebs: true
Acest manifest definește un cluster numit do-eks-yaml-karpenter
cu driverul EBS CSI instalat ca supliment. Un grup de noduri gestionate cu două c5.xlarge
noduri este inclusă pentru a rula pod-urile de sistem care sunt necesare clusterului. Nodurile de lucru sunt găzduite în subrețele private, iar punctul final API al clusterului este public în mod implicit.
De asemenea, puteți utiliza un cluster EKS existent în loc să creați unul. Implementăm Karpenter urmând instrucțiuni în documentația Karpenter sau rulând următoarele scenariu, care automatizează instrucțiunile de implementare.
Următorul cod arată configurația Karpenter pe care o folosim în acest exemplu:
apiVersion: karpenter.sh/v1beta1
kind: NodePool
metadata:
name: default
spec:
template:
metadata: null
labels:
cluster-name: do-eks-yaml-karpenter
annotations:
purpose: karpenter-example
spec:
nodeClassRef:
apiVersion: karpenter.k8s.aws/v1beta1
kind: EC2NodeClass
name: default
requirements:
- key: karpenter.sh/capacity-type
operator: In
values:
- spot
- on-demand
- key: karpenter.k8s.aws/instance-category
operator: In
values:
- c
- m
- r
- g
- p
- key: karpenter.k8s.aws/instance-generation
operator: Gt
values:
- '2'
disruption:
consolidationPolicy: WhenUnderutilized
#consolidationPolicy: WhenEmpty
#consolidateAfter: 30s
expireAfter: 720h
---
apiVersion: karpenter.k8s.aws/v1beta1
kind: EC2NodeClass
metadata:
name: default
spec:
amiFamily: AL2
subnetSelectorTerms:
- tags:
karpenter.sh/discovery: "do-eks-yaml-karpenter"
securityGroupSelectorTerms:
- tags:
karpenter.sh/discovery: "do-eks-yaml-karpenter"
role: "KarpenterNodeRole-do-eks-yaml-karpenter"
tags:
app: autoscaling-test
blockDeviceMappings:
- deviceName: /dev/xvda
ebs:
volumeSize: 80Gi
volumeType: gp3
iops: 10000
deleteOnTermination: true
throughput: 125
detailedMonitoring: true
Definim un Karpenter NodePool implicit cu următoarele cerințe:
- Karpenter poate lansa instanțe din ambele
spot
șion-demand
piscine de capacitate - Instanțele trebuie să fie din „
c
” (optimizat pentru calcul), „m
" (scop general), "r
” (memorie optimizată) sau „g
"Și"p
” (GPU accelerated) familii de calculatoare - Generarea instanțelor trebuie să fie mai mare de 2; de exemplu,
g3
este acceptabil, darg2
nu este
NodePool implicit definește și politicile de întrerupere. Nodurile subutilizate vor fi eliminate, astfel încât podurile să poată fi consolidate pentru a rula pe mai puține noduri sau mai mici. Alternativ, putem configura nodurile goale pentru a fi eliminate după perioada de timp specificată. The expireAfter
setarea specifică durata maximă de viață a oricărui nod, înainte ca acesta să fie oprit și înlocuit dacă este necesar. Acest lucru ajută la reducerea vulnerabilităților de securitate și la evitarea problemelor tipice pentru nodurile cu timpi de funcționare lungi, cum ar fi fragmentarea fișierelor sau scurgerile de memorie.
În mod implicit, Karpenter furnizează noduri cu un volum mic de rădăcină, care poate fi insuficient pentru rularea sarcinilor de lucru AI sau de învățare automată (ML). Unele dintre imaginile containerului de deep learning pot avea o dimensiune de zeci de GB și trebuie să ne asigurăm că există suficient spațiu de stocare pe noduri pentru a rula pod-uri folosind aceste imagini. Pentru a face asta, definim EC2NodeClass
cu blockDeviceMappings
, așa cum se arată în codul precedent.
Karpenter este responsabil pentru scalarea automată la nivel de cluster. Pentru a configura scalarea automată la nivel de pod, folosim KEDA pentru a defini o resursă personalizată numită ScaledObject
, așa cum se arată în următorul cod:
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: keda-prometheus-hpa
namespace: hpa-example
spec:
scaleTargetRef:
name: php-apache
minReplicaCount: 1
cooldownPeriod: 30
triggers:
- type: prometheus
metadata:
serverAddress: http://prometheus- server.prometheus.svc.cluster.local:80
metricName: http_requests_total
threshold: '1'
query: rate(traefik_service_requests_total{service="hpa-example-php-apache-80@kubernetes",code="200"}[2m])
Manifestul precedent definește a ScaledObject
numit keda-prometheus-hpa
, care este responsabil pentru scalarea implementării php-apache și păstrează întotdeauna cel puțin o replică în funcțiune. Scadează podurile acestei implementări pe baza valorii http_requests_total
disponibil în Prometheus, obținut prin interogarea specificată și vizează extinderea podurilor, astfel încât fiecare pod să servească nu mai mult de o solicitare pe secundă. Reducerea replicilor după ce încărcarea cererii a fost sub prag mai mult de 30 de secunde.
specificații de implementare pentru exemplul nostru, serviciul conține următoarele cererile de resurse și limitele:
resources:
limits:
cpu: 500m
nvidia.com/gpu: 1
requests:
cpu: 200m
nvidia.com/gpu: 1
Cu această configurație, fiecare dintre podurile de serviciu va folosi exact un GPU NVIDIA. Când sunt create poduri noi, acestea vor fi în starea În așteptare până când un GPU este disponibil. Karpenter adaugă noduri GPU la cluster după cum este necesar pentru a găzdui podurile în așteptare.
A pod generator de sarcină trimite cereri HTTP către serviciu cu o frecvență prestabilită. Creștem numărul de solicitări prin creșterea numărului de replici în implementarea generatorului de sarcină.
Un ciclu complet de scalare cu consolidarea nodurilor bazată pe utilizare este vizualizat într-un tablou de bord Grafana. Următorul tablou de bord arată numărul de noduri din cluster în funcție de tipul de instanță (sus), numărul de solicitări pe secundă (stânga jos) și numărul de poduri (dreapta jos).
Începem doar cu cele două instanțe CPU c5.xlarge cu care a fost creat clusterul. Apoi implementăm o instanță de serviciu, care necesită un singur GPU. Karpenter adaugă o instanță g4dn.xlarge pentru a satisface această nevoie. Apoi implementăm generatorul de încărcare, ceea ce face ca KEDA să adauge mai multe poduri de servicii, iar Karpenter adaugă mai multe instanțe GPU. După optimizare, starea se stabilește pe o instanță p3.8xlarge cu 8 GPU și o instanță g5.12xlarge cu 4 GPU.
Când scalam implementarea generatoare de încărcare la 40 de replici, KEDA creează poduri de servicii suplimentare pentru a menține încărcarea de solicitare necesară per pod. Karpenter adaugă noduri g4dn.metal și g4dn.12xlarge la cluster pentru a furniza GPU-urile necesare pentru podurile suplimentare. În starea scalată, clusterul conține 16 noduri GPU și servește aproximativ 300 de solicitări pe secundă. Când reducem generatorul de sarcină la 1 replică, are loc procesul invers. După perioada de răcire, KEDA reduce numărul de poduri de service. Apoi, pe măsură ce rulează mai puține poduri, Karpenter elimină nodurile subutilizate din cluster, iar podurile de serviciu se consolidează pentru a rula pe mai puține noduri. Când podul generator de încărcare este eliminat, un singur pod de serviciu pe o singură instanță g4dn.xlarge cu 1 GPU rămâne în funcțiune. Când eliminăm și podul de serviciu, clusterul este lăsat în starea inițială cu doar două noduri CPU.
Putem observa acest comportament atunci când NodePool
are setarea consolidationPolicy: WhenUnderutilized
.
Cu această setare, Karpenter configurează în mod dinamic cluster-ul cu cât mai puține noduri posibil, oferind în același timp resurse suficiente pentru a rula toate podurile și, de asemenea, minimizând costurile.
Comportamentul de scalare prezentat în tabloul de bord următor este observat atunci când NodePool
politica de consolidare este stabilită la WhenEmpty
, impreuna cu consolidateAfter: 30s
.
În acest scenariu, nodurile sunt oprite numai atunci când nu există poduri care rulează pe ele după perioada de răcire. Curba de scalare pare netedă, în comparație cu politica de consolidare bazată pe utilizare; cu toate acestea, se poate observa că sunt utilizate mai multe noduri în starea scalată (22 vs. 16).
În general, combinarea scalarii automate a podului și a clusterului asigură că clusterul se scalează dinamic cu volumul de lucru, alocând resurse atunci când este necesar și eliminându-le atunci când nu sunt utilizate, maximizând astfel utilizarea și minimizând costurile.
Rezultate
Iambic a folosit această arhitectură pentru a permite utilizarea eficientă a GPU-urilor pe AWS și pentru a migra sarcinile de lucru de la CPU la GPU. Folosind instanțe bazate pe GPU EC2, Amazon EKS și Karpenter, am reușit să permitem inferențe mai rapide pentru modelele noastre bazate pe fizică și timpi rapidi de iterare a experimentelor pentru oamenii de știință aplicați care se bazează pe formarea ca serviciu.
Următorul tabel rezumă unele dintre valorile de timp ale acestei migrări.
Sarcină | CPU-uri | unități de procesare grafică |
Inferență folosind modele de difuzie pentru modele ML bazate pe fizică | 3,600 secunde |
100 secunde (datorită grupării inerente de GPU-uri) |
Training model ML ca serviciu | 180 minute | 4 minute |
Următorul tabel rezumă câteva dintre valorile noastre privind timpul și costul.
Sarcină | Performanță/cost | |
CPU-uri | unități de procesare grafică | |
Antrenamentul modelului ML |
240 minute medie de 0.70 USD per sarcină de antrenament |
20 minute medie de 0.38 USD per sarcină de antrenament |
Rezumat
În această postare, am prezentat modul în care Iambic a folosit Karpenter și KEDA pentru a scala infrastructura Amazon EKS pentru a îndeplini cerințele de latență ale sarcinilor noastre de inferență și instruire AI. Karpenter și KEDA sunt instrumente open source puternice care ajută la scalarea automată a clusterelor EKS și a sarcinilor de lucru care rulează pe ele. Acest lucru ajută la optimizarea costurilor de calcul, îndeplinind în același timp cerințele de performanță. Puteți verifica codul și implementa aceeași arhitectură în propriul mediu, urmând procedura completă din aceasta GitHub repo.
Despre Autori
Matthew Welborn este directorul Machine Learning la Iambic Therapeutics. El și echipa sa folosesc inteligența artificială pentru a accelera identificarea și dezvoltarea de noi terapii, aducând mai rapid medicamente care salvează vieți pacienților.
Paul Whittemore este inginer principal la Iambic Therapeutics. El sprijină livrarea infrastructurii pentru platforma Iambic de descoperire a medicamentelor bazată pe inteligență artificială.
Alex Iankoulski este arhitect principal de soluții, ML/AI Frameworks, care se concentrează pe a ajuta clienții să-și orchestreze sarcinile de lucru AI folosind containere și infrastructură de calcul accelerată pe AWS.
- 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/scale-ai-training-and-inference-for-drug-discovery-through-amazon-eks-and-karpenter/
- :are
- :este
- :nu
- ][p
- $UP
- 1
- 10
- 100
- 125
- 16
- 200
- 200m
- 22
- 24
- 26%
- 28
- 30
- 300
- 40
- 600
- 7
- 70
- 8
- 80
- a
- capacitate
- Capabil
- Despre Noi
- accelera
- accelerat
- acceptabil
- acces
- accesibil
- găzdui
- peste
- Acțiune
- adăuga
- Add-on
- Suplimentar
- adresa
- Adaugă
- avansat
- afinitate
- După
- AI
- Modele AI
- Instruire AI
- TOATE
- permite
- de-a lungul
- de asemenea
- mereu
- Amazon
- Amazon EC2
- Amazon Web Services
- an
- și
- Orice
- api
- aplicaţia
- apare
- aplicabil
- aplicație
- aplicat
- se aplică
- abordare
- arhitectural
- arhitectură
- SUNT
- domenii
- artificial
- inteligență artificială
- Inteligența artificială (AI)
- AS
- At
- Auto
- Automata
- automate
- în mod automat
- disponibil
- evita
- AWS
- bazat
- dozare
- BE
- fost
- înainte
- comportament
- în spatele
- de mai jos
- CEL MAI BUN
- Mai bine
- Dincolo de
- biologie
- Bloca
- atât
- De jos
- aduce
- Aducere
- browser-ul
- construi
- dar
- by
- denumit
- apeluri
- CAN
- Rac
- candidaţilor
- capacități
- Capacitate
- valorificând
- cazuri
- cauze
- verifica
- chimic
- chimie
- Alege
- a ales
- clase
- clinic
- Cloud
- infrastructura cloud
- Grup
- cod
- colecte
- combinând
- comparație
- concurenți
- Completă
- Terminat
- calcul
- Calcula
- calculator
- tehnica de calcul
- Configuraţie
- configurat
- consolidarea
- consolidare
- construcții
- Recipient
- Containere
- conține
- Control
- invers
- cooldown
- Nucleu
- A costat
- Cheltuieli
- ar putea
- crea
- a creat
- creează
- Crearea
- CSI
- curba
- personalizat
- clienţii care
- ciclu
- tablou de bord
- de date
- puncte de date
- de prelucrare a datelor
- Luarea deciziilor
- adânc
- învățare profundă
- Mod implicit
- defini
- defineste
- livrare
- demonstra
- implementa
- desfășurarea
- implementează
- Amenajări
- proiectat
- detectat
- Dezvoltare
- diagramă
- diferit
- diferențiat
- difuziune
- dirijat
- Director
- descoperire
- Ruptură
- do
- Docher
- documentaţie
- făcut
- jos
- zeci
- condus
- şofer
- medicament
- două
- dinamic
- fiecare
- în mod eficient
- eficient
- fără efort
- element
- permite
- activat
- permite
- un capăt la altul
- Punct final
- inginer
- enorm
- suficient de
- Mediu inconjurator
- echipat
- stabilit
- eveniment
- Fiecare
- exact
- exemplu
- existent
- experiment
- experimental
- expert
- explora
- expus
- facilita
- FAST
- mai repede
- puțini
- mai puține
- Fișier
- Concentra
- se concentrează
- urma
- următor
- Pentru
- fragmentarea
- Cadru
- cadre
- Frecvență
- din
- Complet
- General
- generată
- generează
- generaţie
- generativ
- AI generativă
- generator
- obține
- GPU
- unități de procesare grafică
- mai mare
- grup
- Oaspete
- Vizitator Mesaj
- manipula
- Avea
- he
- ajutor
- ajutor
- ajută
- aici
- lui
- găzduit
- ORE
- Cum
- Totuși
- http
- HTTPS
- Identificare
- if
- ilustrează
- imagine
- imagini
- imperativ
- îmbunătăţi
- îmbunătățire
- in
- inclus
- Crește
- crescând
- Infrastructură
- inerent
- inițială
- inițial
- inovatoare
- înţelegere
- instalat
- instanță
- in schimb
- instrucțiuni
- integrate
- integrare
- Inteligență
- interpreta
- probleme de
- IT
- repetare
- jpg
- doar
- păstrează
- Cheie
- Copil
- etichete
- lipsă
- mare
- Latență
- lansa
- Conducere
- Scurgeri
- învăţare
- cel mai puțin
- stânga
- Nivel
- Pârghie
- durata de viaţă
- Limitele
- încărca
- local
- Lung
- mai lung
- cautati
- Jos
- maşină
- masina de învățare
- menține
- face
- FACE
- gestionate
- maximizarea
- maxim
- Mai..
- măsura
- mecanisme
- mediu
- Întâlni
- Reuniunea
- Memorie
- fuzionează
- Metadata
- metal
- metric
- Metrici
- migra
- migrațiune
- milioane
- minimizând
- Misiune
- ML
- model
- Modele
- monitoare
- luni
- mai mult
- multiplu
- trebuie sa
- nume
- Numit
- necesar
- Nevoie
- necesar
- Nou
- recent
- Nu.
- nod
- noduri
- roman
- număr
- numeroși
- Nvidia
- observa
- obținut
- of
- on
- La cerere
- ONE
- afară
- deschide
- open-source
- operator
- Oportunităţi
- optimizare
- Optimizați
- optimizate
- or
- Altele
- al nostru
- afară
- peste
- propriu
- pacient
- pacientes
- în așteptarea
- pentru
- performanță
- efectuează
- perioadă
- Loc
- platformă
- Plato
- Informații despre date Platon
- PlatoData
- puncte
- Politicile
- Politica
- posibil
- Post
- alimentat
- puternic
- precedent
- prezice
- prezenta
- primar
- Principal
- Principiile
- privat
- proces
- Procesat
- prelucrare
- produce
- Program
- proiect
- proprietăţi
- Proteină
- furniza
- furnizarea
- împuternicit
- public
- scop
- întrebare
- repede
- R
- real
- în timp real
- motive
- reduce
- reduce
- rafina
- regiune
- se bazează
- rămășițe
- scoate
- îndepărtat
- Îndepărtează
- eliminarea
- înlocuiește
- răspunde
- solicita
- cereri de
- necesita
- necesar
- Cerinţe
- Necesită
- resursă
- Resurse
- responsabil
- inversa
- dreapta
- Rol
- rădăcină
- Alerga
- funcţionare
- acelaşi
- scalabil
- Scară
- scara ai
- scalate
- cântare
- scalare
- scenariu
- programată
- programare
- oamenii de stiinta
- script-uri
- Caută
- căutare
- Al doilea
- secunde
- Secțiune
- securitate
- văzut
- semantică
- trimite
- trimite
- serverul
- servește
- serviciu
- Servicii
- servire
- set
- instalare
- Settles
- a prezentat
- indicat
- Emisiuni
- semnificativ
- asemănător
- simplifica
- simulare
- singur
- Mărimea
- mic
- mai mici
- netezi
- So
- Software
- soluţie
- soluţii
- unele
- Sursă
- Spaţiu
- Specificaţii
- specificată
- Specificatii
- viteză
- Loc
- standard
- Începe
- lansare
- Stat
- paşi
- oprit
- depozitare
- structura
- subrețele
- succes
- astfel de
- suficient
- superior
- furnizarea
- a sustine
- Sprijină
- sigur
- SVC
- sistem
- tabel
- ia
- direcționare
- obiective
- echipă
- Tehnologii
- șablon
- zeci
- Terraform
- decât
- acea
- Statul
- lor
- Lor
- apoi
- terapeutică
- Acolo.
- astfel
- Acestea
- ei
- acest
- mii
- prag
- Prin
- debit
- timp
- ori
- la
- a luat
- Unelte
- top
- Pregătire
- adevărat
- Două
- tip
- Tipuri
- tipic
- unic
- fără precedent
- până la
- timpii de funcționare
- urgent
- us
- utilizare
- utilizat
- folosind
- v1
- Valori
- Fixă
- multilateral
- versiune
- de
- volum
- volume
- vs
- Vulnerabilitățile
- walkthrough
- dorit
- a fost
- we
- web
- aplicatie web
- browser web
- servicii web
- săptămână
- BINE
- au fost
- Ce
- Ce este
- cand
- care
- în timp ce
- OMS
- voi
- cu
- în
- Apartamente
- lucrător
- yaml
- Tu
- Ta
- zephyrnet