MLOps je ključna disciplina, ki pogosto nadzira pot do proizvodnje modelov strojnega učenja (ML). Naravno je, da se osredotočite na en sam model, ki ga želite usposobiti in uvesti. Vendar pa boste v resnici verjetno delali z desetinami ali celo stotinami modelov in postopek lahko vključuje več zapletenih korakov. Zato je pomembno imeti vzpostavljeno infrastrukturo za sledenje, usposabljanje, uvajanje in spremljanje modelov z različnimi kompleksnostmi v obsegu. Tu nastopi orodje MLOps. Orodje MLOps vam pomaga ponavljajoče in zanesljivo graditi in poenostavljati te procese v potek dela, ki je prilagojen za ML.
Amazonski cevovodi SageMaker, značilnost Amazon SageMaker, je namensko ustvarjena storitev orkestracije poteka dela za ML, ki vam pomaga avtomatizirati poteke dela ML od konca do konca v velikem obsegu. Poenostavlja razvoj in vzdrževanje modelov ML z zagotavljanjem centralizirane platforme za usmerjanje nalog, kot so priprava podatkov, usposabljanje modela, nastavitev in validacija. SageMaker Pipelines vam lahko pomaga poenostaviti upravljanje delovnega toka, pospešiti eksperimentiranje in lažje ponovno usposobiti modele.
V tej objavi izpostavljamo vznemirljivo novo funkcijo SageMaker Pipelines, znano kot Selektivna izvedba. Ta nova funkcija vam omogoča selektivno izvajanje določenih delov vašega delovnega toka ML, kar ima za posledico znatne prihranke časa in računalniških virov z omejevanjem izvajanja na korake cevovoda v obsegu in odpravo potrebe po izvajanju korakov izven obsega. Poleg tega raziskujemo različne primere uporabe, kjer postanejo očitne prednosti uporabe selektivnega izvajanja, kar dodatno utrjuje njegovo vrednostno ponudbo.
Pregled rešitev
SageMaker Pipelines nadaljuje z inoviranjem svoje izkušnje razvijalcev z izdajo Selektivna izvedba. Graditelji ML imajo zdaj možnost izbrati določene korake za izvajanje v cevovodu, s čimer se odpravi potreba po ponovnem zagonu celotnega cevovoda. Ta funkcija vam omogoča, da znova zaženete določene odseke cevovoda, medtem ko spreminjate parametre izvajalnega časa, povezane z izbranimi koraki.
Pomembno je vedeti, da se izbrani koraki lahko zanašajo na rezultate neizbranih korakov. V takšnih primerih se izhodi teh neizbranih korakov ponovno uporabijo iz referenčnega zagona trenutne različice cevovoda. To pomeni, da mora biti referenčna vožnja že končana. Privzeti referenčni zagon je zadnji zagon trenutne različice cevovoda, lahko pa se tudi odločite za uporabo drugega zagona trenutne različice cevovoda kot reference.
Splošno stanje referenčne vožnje mora biti Uspešno, ni uspelo or Ustavljen. Ne more biti Tek ko Selektivna izvedba poskuša uporabiti svoje izhode. Ko uporabljate selektivno izvajanje, lahko izberete poljubno število korakov, ki jih želite izvesti, če le tvorijo sosednji del cevovoda.
Naslednji diagram prikazuje obnašanje cevovoda pri polnem zagonu.
Naslednji diagram ponazarja obnašanje cevovoda z uporabo selektivnega izvajanja.
V naslednjih razdelkih prikazujemo, kako uporabiti selektivno izvajanje za različne scenarije, vključno s kompleksnimi poteki dela v neposrednih acikličnih grafih (DAG) v cevovodu.
Predpogoji
Za začetek eksperimentiranja s selektivnim izvajanjem moramo najprej nastaviti naslednje komponente vašega okolja SageMaker:
- SDK SageMaker Python – Zagotovite, da imate posodobljeno SDK SageMaker Python nameščen v vašem okolju Python. Naslednji ukaz lahko zaženete iz prenosnika ali terminala, da namestite ali nadgradite različico SDK SageMaker Python na 2.162.0 ali višje:
python3 -m pip install sagemaker>=2.162.0
orpip3 install sagemaker>=2.162.0
. - Dostop do SageMaker Studio (neobvezno) - Amazon SageMaker Studio je lahko v pomoč pri vizualizaciji poteka cevovoda in vizualni interakciji z že obstoječimi ARN-ji cevovoda. Če nimate dostopa do SageMaker Studio ali uporabljate prenosnike na zahtevo ali druge IDE-je, lahko še vedno spremljate to objavo in komunicirate s svojimi cevovodnimi ARN-ji z uporabo Python SDK.
Vzorčna koda za celotno predstavitev od konca do konca je na voljo v GitHub repo.
Setup
Z sagemaker>=1.162.0
SDK za Python, smo predstavili SelectiveExecutionConfig
razreda v sklopu sagemaker.workflow.selective_execution_config
modul. Funkcija selektivnega izvajanja se opira na ARN cevovoda, ki je bil predhodno označen kot Uspelo, ni uspelo or Ustavljen. Naslednji delček kode prikazuje, kako uvoziti SelectiveExecutionConfig
razreda, pridobi referenčni ARN cevovoda in zberi povezane korake cevovoda in parametre izvajalnega časa, ki urejajo potek cevovoda:
import boto3
from sagemaker.workflow.pipeline import Pipeline
from sagemaker.workflow.selective_execution_config import SelectiveExecutionConfig sm_client = boto3.client('sagemaker')
# reference the name of your sample pipeline pipeline_name = "AbalonePipeline"
# filter for previous success pipeline execution arns
pipeline_executions = [_exec for _exec in Pipeline(name=pipeline_name).list_executions()['PipelineExecutionSummaries'] if _exec['PipelineExecutionStatus'] == "Succeeded"
]
# get the last successful execution
latest_pipeline_arn = pipeline_executions[0]['PipelineExecutionArn']
print(latest_pipeline_arn)
>>> arn:aws:sagemaker:us-east-1:123123123123:pipeline/AbalonePipeline/execution/x62pbar3gs6h # list all steps of your sample pipeline
execution_steps = sm_client.list_pipeline_execution_steps( PipelineExecutionArn=latest_pipeline_arn
)['PipelineExecutionSteps']
print(execution_steps)
>>> [{'StepName': 'Abalone-Preprocess', 'StartTime': datetime.datetime(2023, 6, 27, 4, 41, 30, 519000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2023, 6, 27, 4, 41, 30, 986000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'AttemptCount': 0, 'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-1:123123123123:processing-job/pipelines-fvsmu7m7ki3q-Abalone-Preprocess-d68CecvHLU'}}, 'SelectiveExecutionResult': {'SourcePipelineExecutionArn': 'arn:aws:sagemaker:us-east-1:123123123123:pipeline/AbalonePipeline/execution/ksm2mjwut6oz'}}, {'StepName': 'Abalone-Train', 'StartTime': datetime.datetime(2023, 6, 27, 4, 41, 31, 320000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2023, 6, 27, 4, 43, 58, 224000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'AttemptCount': 0, 'Metadata': {'TrainingJob': {'Arn': 'arn:aws:sagemaker:us-east-1:123123123123:training-job/pipelines-x62pbar3gs6h-Abalone-Train-PKhAc1Q6lx'}}}, {'StepName': 'Abalone-Evaluate', 'StartTime': datetime.datetime(2023, 6, 27, 4, 43, 59, 40000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2023, 6, 27, 4, 57, 43, 76000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'AttemptCount': 0, 'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-1:123123123123:processing-job/pipelines-x62pbar3gs6h-Abalone-Evaluate-vmkZDKDwhk'}}}, {'StepName': 'Abalone-MSECheck', 'StartTime': datetime.datetime(2023, 6, 27, 4, 57, 43, 821000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2023, 6, 27, 4, 57, 44, 124000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'AttemptCount': 0, 'Metadata': {'Condition': {'Outcome': 'True'}}}] # list all configureable pipeline parameters # params can be altered during selective execution
parameters = sm_client.list_pipeline_parameters_for_execution( PipelineExecutionArn=latest_pipeline_arn
)['PipelineParameters']
print(parameters)
>>> [{'Name': 'XGBNumRounds', 'Value': '120'}, {'Name': 'XGBSubSample', 'Value': '0.9'}, {'Name': 'XGBGamma', 'Value': '2'}, {'Name': 'TrainingInstanceCount', 'Value': '1'}, {'Name': 'XGBMinChildWeight', 'Value': '4'}, {'Name': 'XGBETA', 'Value': '0.25'}, {'Name': 'ApprovalStatus', 'Value': 'PendingManualApproval'}, {'Name': 'ProcessingInstanceCount', 'Value': '1'}, {'Name': 'ProcessingInstanceType', 'Value': 'ml.t3.medium'}, {'Name': 'MseThreshold', 'Value': '6'}, {'Name': 'ModelPath', 'Value': 's3://sagemaker-us-east-1-123123123123/Abalone/models/'}, {'Name': 'XGBMaxDepth', 'Value': '12'}, {'Name': 'TrainingInstanceType', 'Value': 'ml.c5.xlarge'}, {'Name': 'InputData', 'Value': 's3://sagemaker-us-east-1-123123123123/sample-dataset/abalone/abalone.csv'}]
Uporabite primeri
V tem razdelku predstavljamo nekaj scenarijev, v katerih lahko selektivna izvedba potencialno prihrani čas in vire. Kot referenco za prikaz prednosti selektivnega izvajanja uporabljamo tipičen tok cevovoda, ki vključuje korake, kot so ekstrakcija podatkov, usposabljanje, vrednotenje, registracija modela in uvedba.
SageMaker Pipelines vam omogoča, da določite parametre izvajalnega časa za vaš potek cevovoda z uporabo parametrov cevovoda. Ko se sproži nov zagon, običajno izvaja celoten cevovod od začetka do konca. Vendar, če predpomnjenje korakov je omogočen, bo SageMaker Pipelines poskušal najti prejšnji zagon trenutnega koraka cevovoda z enakimi vrednostmi atributov. Če se najde ujemanje, bo SageMaker Pipelines namesto ponovnega izračuna koraka uporabil rezultate prejšnjega zagona. Upoštevajte, da tudi če je omogočeno predpomnjenje korakov, bodo SageMaker Pipelines še vedno privzeto izvajali celoten potek dela do konca.
Z izdajo funkcije selektivnega izvajanja lahko zdaj znova zaženete celoten potek dela cevovoda ali selektivno zaženete podnabor korakov z uporabo prejšnjega ARN cevovoda. To je mogoče storiti tudi brez omogočenega predpomnjenja korakov. Naslednji primeri uporabe ponazarjajo različne načine, kako lahko uporabite selektivno izvajanje.
Primer uporabe 1: Zaženite en korak
Podatkovni znanstveniki se pogosto osredotočajo na stopnjo usposabljanja cevovoda MLOps in ne želijo skrbeti za korake predprocesiranja ali uvajanja. Selektivna izvedba omogoča podatkovnim znanstvenikom, da se osredotočijo samo na korak usposabljanja in sproti spreminjajo parametre usposabljanja ali hiperparametre, da izboljšajo model. To lahko prihrani čas in zmanjša stroške, ker se računalniški viri uporabljajo samo za izvajanje korakov cevovoda, ki jih izbere uporabnik. Oglejte si naslednjo kodo:
# select a reference pipeline arn and subset step to execute
selective_execution_config = SelectiveExecutionConfig( source_pipeline_execution_arn="arn:aws:sagemaker:us-east-1:123123123123:pipeline/AbalonePipeline/execution/9e3ljoql7s0n", selected_steps=["Abalone-Train"]
) # start execution of pipeline subset
select_execution = pipeline.start( selective_execution_config=selective_execution_config, parameters={ "XGBNumRounds": 120, "XGBSubSample": 0.9, "XGBGamma": 2, "XGBMinChildWeight": 4, "XGBETA": 0.25, "XGBMaxDepth": 12 }
)
Naslednje slike prikazujejo cevovod z enim korakom v procesu in nato dokončanim.
Primer uporabe 2: Izvedite več sosednjih korakov cevovoda
Če nadaljujemo s prejšnjim primerom uporabe, želi podatkovni znanstvenik usposobiti nov model in ovrednotiti njegovo delovanje glede na zlati testni niz podatkov. Ta ocena je ključnega pomena za zagotovitev, da model izpolnjuje stroge smernice za testiranje sprejemljivosti za uporabnike (UAT) ali uvedbo v proizvodnjo. Vendar pa podatkovni znanstvenik ne želi zagnati celotnega delovnega toka cevovoda ali razmestiti modela. Uporabljajo lahko Selektivno izvajanje, da se osredotočijo izključno na korake usposabljanja in ocenjevanja, prihranijo čas in vire, hkrati pa dobijo rezultate preverjanja, ki jih potrebujejo:
# select a reference pipeline arn and subset step to execute
selective_execution_config = SelectiveExecutionConfig( source_pipeline_execution_arn="arn:aws:sagemaker:us-east-1:123123123123:pipeline/AbalonePipeline/execution/9e3ljoql7s0n", selected_steps=["Abalone-Train", "Abalone-Evaluate"]
) # start execution of pipeline subset
select_execution = pipeline.start( selective_execution_config=selective_execution_config, parameters={ "ProcessingInstanceType": "ml.t3.medium", "XGBNumRounds": 120, "XGBSubSample": 0.9, "XGBGamma": 2, "XGBMinChildWeight": 4, "XGBETA": 0.25, "XGBMaxDepth": 12 }
)
3. primer uporabe: Posodobite in znova zaženite neuspele korake cevovoda
Selektivno izvajanje lahko uporabite za ponovno izvajanje neuspelih korakov znotraj cevovoda ali nadaljevanje izvajanja cevovoda od neuspelega koraka naprej. To je lahko uporabno za odpravljanje težav in razhroščevanje neuspelih korakov, ker razvijalcem omogoča, da se osredotočijo na specifične težave, ki jih je treba obravnavati. To lahko vodi do učinkovitejšega reševanja problemov in hitrejšega ponavljanja. Naslednji primer ponazarja, kako se lahko odločite za ponovni zagon samo neuspelega koraka cevovoda.
# select a previously failed pipeline arn
selective_execution_config = SelectiveExecutionConfig( source_pipeline_execution_arn="arn:aws:sagemaker:us-east-1:123123123123:pipeline/AbalonePipeline/execution/fvsmu7m7ki3q", selected_steps=["Abalone-Evaluate"]
) # start execution of failed pipeline subset
select_execution = pipeline.start( selective_execution_config=selective_execution_config
)
Druga možnost je, da lahko podatkovni znanstvenik nadaljuje cevovod od neuspelega koraka do konca delovnega toka tako, da navede neuspeli korak in vse korake, ki mu sledijo v SelectiveExecutionConfig
.
Primer uporabe 4: Pokritost cevovoda
V nekaterih cevovodih se nekatere veje izvajajo manj pogosto kot druge. Na primer, morda obstaja veja, ki se zažene samo, ko določen pogoj ne uspe. Pomembno je, da te veje temeljito preizkusite, da zagotovite, da delujejo po pričakovanjih, ko pride do okvare. S testiranjem teh manj pogosto izvajanih vej lahko razvijalci preverijo, ali je njihov cevovod robusten in ali mehanizmi za obravnavanje napak učinkovito vzdržujejo želeni potek dela in proizvajajo zanesljive rezultate.
selective_execution_config = SelectiveExecutionConfig( source_pipeline_execution_arn="arn:aws:sagemaker:us-east-1:123123123123:pipeline/AbalonePipeline/execution/9e3ljoql7s0n", selected_steps=["Abalone-Train", "Abalone-Evaluate", "Abalone-MSECheck", "Abalone-FailNotify"]
)
zaključek
V tej objavi smo razpravljali o funkciji selektivnega izvajanja SageMaker Pipelines, ki vam omogoča selektivno izvajanje določenih korakov vaših delovnih tokov ML. Ta zmožnost vodi do znatnih prihrankov časa in računalniških virov. Zagotovili smo nekaj vzorčne kode v GitHub repo ki prikazuje, kako uporabljati selektivno izvajanje, in predstavlja različne scenarije, kjer je to lahko koristno za uporabnike. Če želite izvedeti več o selektivnem izvajanju, si oglejte naše Vodnik za razvijalce in Referenčni vodnik za API.
Če želite podrobneje raziskati razpoložljive korake znotraj poteka dela SageMaker Pipelines, glejte Amazon SageMaker Model Building Pipeline in Poteki dela SageMaker. Poleg tega lahko najdete več primerov, ki prikazujejo različne primere uporabe in implementacijske pristope z uporabo SageMaker Pipelines v Primeri AWS SageMaker Repozitorij GitHub. Ti viri lahko dodatno izboljšajo vaše razumevanje in vam pomagajo izkoristiti celoten potencial cevovodov SageMaker in selektivnega izvajanja v vaših trenutnih in prihodnjih projektih ML.
O avtorjih
Pranav Murthy je specialist za rešitve AI/ML pri AWS. Osredotoča se na pomoč strankam pri gradnji, usposabljanju, uvajanju in selitvi delovnih obremenitev strojnega učenja (ML) v SageMaker. Pred tem je delal v industriji polprevodnikov, razvijal modele velikega računalniškega vida (CV) in obdelave naravnega jezika (NLP) za izboljšanje polprevodniških procesov. V prostem času rad igra šah in potuje.
Akhil Numarsu je Sr.Product Manager-Technical, osredotočen na pomoč ekipam pri pospeševanju rezultatov ML z učinkovitimi orodji in storitvami v oblaku. Rad igra namizni tenis in je ljubitelj športa.
Nishant Krishnamoorthy je višji inženir za razvoj programske opreme pri Amazon Stores. Ima magisterij iz računalništva in se trenutno osredotoča na pospeševanje sprejemanja ML v različnih organizacijah znotraj Amazona z gradnjo in operacionalizacijo rešitev ML na SageMakerju.
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- PlatoData.Network Vertical Generative Ai. Opolnomočite se. Dostopite tukaj.
- PlatoAiStream. Web3 Intelligence. Razširjeno znanje. Dostopite tukaj.
- PlatoESG. Avtomobili/EV, Ogljik, CleanTech, Energija, Okolje, sončna energija, Ravnanje z odpadki. Dostopite tukaj.
- PlatoHealth. Obveščanje o biotehnologiji in kliničnih preskušanjih. Dostopite tukaj.
- ChartPrime. Izboljšajte svojo igro trgovanja s ChartPrime. Dostopite tukaj.
- BlockOffsets. Posodobitev okoljskega offset lastništva. Dostopite tukaj.
- vir: https://aws.amazon.com/blogs/machine-learning/unlocking-efficiency-harnessing-the-power-of-selective-execution-in-amazon-sagemaker-pipelines/
- :ima
- : je
- :kje
- $GOR
- 1
- 100
- 12
- 2023
- 25
- 27
- 30
- 31
- 7
- 9
- a
- sposobnost
- O meni
- pospeši
- pospeševanje
- sprejem
- dostop
- aciklični
- Poleg tega
- Sprejetje
- Prednost
- ugoden
- Prednosti
- proti
- AI / ML
- vsi
- omogoča
- že
- Prav tako
- spremenila
- Amazon
- Amazon SageMaker
- Amazonski cevovodi SageMaker
- Amazon Web Services
- an
- in
- kaj
- pristopi
- SE
- AS
- povezan
- At
- Poskusi
- avtomatizirati
- Na voljo
- AWS
- BE
- ker
- postanejo
- bilo
- vedenje
- Branch
- veje
- izgradnjo
- gradbeniki
- Building
- vendar
- by
- CAN
- ne more
- zmožnost
- primeru
- primeri
- centralizirano
- nekatere
- Šah
- Izberite
- razred
- Cloud
- Koda
- prihaja
- dokončanje
- Končana
- kompleksna
- zapletenosti
- deli
- Izračunajte
- računalnik
- Računalništvo
- Računalniška vizija
- stanje
- se nadaljuje
- strošek
- ključnega pomena
- Trenutna
- Trenutno
- Stranke, ki so
- datum
- Priprava podatkov
- podatkovni znanstvenik
- Datum čas
- privzeto
- opredeliti
- Stopnja
- izkazati
- dokazuje,
- razporedi
- uvajanje
- želeno
- Podatki
- Razvojni
- Razvijalci
- razvoju
- Razvoj
- drugačen
- neposredna
- razpravljali
- ne
- Ne
- opravljeno
- dont
- desetine
- med
- enostavno
- učinkovito
- učinkovitosti
- učinkovite
- odstranjevanje
- pooblašča
- omogočena
- omogoča
- konec
- konec koncev
- inženir
- okrepi
- zagotovitev
- Celotna
- okolje
- oceniti
- Ocena
- Tudi
- očitno
- Primer
- Primeri
- zanimivo
- izvršiti
- izvedba
- Pričakuje
- izkušnje
- raziskuje
- pridobivanje
- ni uspelo
- ne uspe
- Napaka
- ventilator
- hitreje
- Feature
- Nekaj
- Številke
- filter
- Najdi
- konča
- prva
- Pretok
- Osredotočite
- osredotočena
- Osredotoča
- sledi
- po
- za
- obrazec
- je pokazala,
- brezplačno
- pogosto
- iz
- polno
- nadalje
- Poleg tega
- Prihodnost
- zbiranje
- dobili
- pridobivanje
- GitHub
- Zlata
- upravljanje
- grafi
- Smernice
- Dovoljenje
- Imajo
- he
- pomoč
- pomoč
- pomoč
- Pomaga
- več
- njegov
- drži
- Kako
- Kako
- Vendar
- HTML
- HTTPS
- Stotine
- if
- ponazarja
- Izvajanje
- uvoz
- Pomembno
- izboljšanje
- in
- vključuje
- Vključno
- Industrija
- Infrastruktura
- inovacije
- namestitev
- nameščen
- Namesto
- interakcijo
- medsebojno delovanje
- v
- Uvedeno
- vključujejo
- Vprašanja
- IT
- ponovitev
- ITS
- jpg
- samo
- Ključne
- znano
- jezik
- velika
- Zadnja
- Zadnji
- vodi
- Interesenti
- UČITE
- učenje
- manj
- kot
- Verjeten
- omejujoč
- Seznam
- Long
- stroj
- strojno učenje
- vzdrževati
- vzdrževanje
- upravljanje
- označeno
- Stave
- Maj ..
- pomeni
- Mehanizmi
- srednje
- ustreza
- metapodatki
- morda
- selitev
- ML
- MLOps
- Model
- modeli
- spremenite
- Moduli
- monitor
- več
- učinkovitejše
- več
- morajo
- Ime
- naravna
- Obdelava Natural Language
- Nimate
- Novo
- nlp
- prenosnik
- zdaj
- Številka
- of
- pogosto
- on
- Na zahtevo
- ONE
- samo
- or
- orkestracijo
- Ostalo
- drugi
- naši
- ven
- Rezultat
- rezultatov
- Splošni
- parametri
- del
- pot
- performance
- plinovod
- Kraj
- platforma
- platon
- Platonova podatkovna inteligenca
- PlatoData
- igranje
- del
- Prispevek
- potencial
- potencialno
- moč
- Priprava
- predstaviti
- predstavljeni
- prejšnja
- prej
- Predhodna
- reševanje problema
- Postopek
- Procesi
- obravnavati
- proizvodnjo
- Izdelek
- proizvodnja
- projekti
- predlog
- če
- zagotavljanje
- Python
- Reality
- zmanjša
- registracija
- sprostitev
- zanesljiv
- zanašajo
- Skladišče
- vir
- viri
- rezultat
- Rezultati
- Nadaljuj
- strog
- robusten
- Run
- tek
- deluje
- sagemaker
- SageMaker cevovodi
- Enako
- Shrani
- shranjevanje
- Prihranki
- Lestvica
- scenariji
- Znanost
- Znanstvenik
- Znanstveniki
- Obseg
- SDK
- Oddelek
- oddelki
- glej
- izbran
- selektivno
- polprevodnik
- Storitev
- Storitve
- nastavite
- Prikaži
- razstavni
- pomemben
- poenostavitev
- sam
- delček
- Software
- Razvoj programske opreme
- Izključno
- utrjevanje
- rešitve
- nekaj
- specialist
- specifična
- Šport
- Spotlight
- Stage
- Začetek
- Država
- Korak
- Koraki
- Še vedno
- trgovine
- racionalizirati
- studio
- uspeh
- uspešno
- taka
- miza
- prilagojene
- Bodite
- Naloge
- Skupine
- terminal
- Test
- Testiranje
- kot
- da
- O
- njihove
- POTEM
- Tukaj.
- zato
- te
- jih
- ta
- temeljito
- skozi
- čas
- krat
- do
- orodja
- sledenje
- Vlak
- usposabljanje
- Potovanje
- sprožilo
- Res
- tipičen
- tipično
- razumevanje
- odklepanje
- Nadgradnja
- posodobljeno
- nadgradnja
- uporaba
- primeru uporabe
- uporabnik
- Uporabniki
- uporabo
- uporablja
- Uporaben
- potrjevanje
- vrednost
- Vrednote
- različnih
- preverjanje
- različica
- Vizija
- walkthrough
- želeli
- želi
- načini
- we
- web
- spletne storitve
- kdaj
- ki
- medtem
- bo
- z
- v
- brez
- delo
- delal
- potek dela
- delovnih tokov
- skrbi
- bi
- Vi
- Vaša rutina za
- zefirnet