V tem prispevku prikazujemo, kako učinkovito natančno prilagoditi najsodobnejši model proteinskega jezika (pLM) za napovedovanje subcelične lokalizacije proteina z uporabo Amazon SageMaker.
Beljakovine so molekularni stroji telesa, ki so odgovorni za vse, od premikanja mišic do odzivanja na okužbe. Kljub tej raznolikosti so vse beljakovine sestavljene iz ponavljajočih se verig molekul, imenovanih aminokisline. Človeški genom kodira 20 standardnih aminokislin, od katerih ima vsaka nekoliko drugačno kemično strukturo. Te lahko predstavimo s črkami abecede, kar nam nato omogoči analizo in raziskovanje beljakovin kot besedilni niz. Ogromno možno število beljakovinskih zaporedij in struktur je tisto, kar daje beljakovinam široko paleto uporabnosti.
Beljakovine imajo tudi ključno vlogo pri razvoju zdravil, kot potencialne tarče, pa tudi kot terapevtiki. Kot je prikazano v naslednji tabeli, so bila mnoga najbolj prodajana zdravila v letu 2022 beljakovine (zlasti protitelesa) ali druge molekule, kot je mRNA, prevedena v beljakovine v telesu. Zaradi tega morajo mnogi raziskovalci znanosti o življenju odgovoriti na vprašanja o beljakovinah hitreje, ceneje in natančneje.
Ime | Proizvajalec | Globalna prodaja 2022 (milijarde USD) | Indikacije |
Comirnaty | Pfizer / BioNTech | $40.8 | Covid-19 |
Spikevax | Sodobna | $21.8 | Covid-19 |
Humira | AbbVie | $21.6 | Artritis, Crohnova bolezen in drugi |
keytruda | Merck | $21.0 | Različne vrste raka |
Vir podatkov: Urquhart, L. Najboljša podjetja in zdravila po prodaji v letu 2022. Nature Reviews Drug Discovery 22, 260–260 (2023).
Ker lahko proteine predstavimo kot zaporedja znakov, jih lahko analiziramo s tehnikami, prvotno razvitimi za pisni jezik. To vključuje velike jezikovne modele (LLM), vnaprej usposobljene na ogromnih naborih podatkov, ki jih je nato mogoče prilagoditi za posebne naloge, kot je povzemanje besedila ali chatboti. Podobno so pLM vnaprej usposobljeni na velikih podatkovnih bazah zaporedij beljakovin z uporabo neoznačenega, samonadzorovanega učenja. Lahko jih prilagodimo tako, da napovejo stvari, kot je 3D struktura proteina ali kako lahko medsebojno deluje z drugimi molekulami. Raziskovalci so celo uporabili pLM za načrtovanje novih beljakovin iz nič. Ta orodja ne nadomeščajo človeškega znanstvenega znanja, vendar lahko pospešijo predklinični razvoj in načrtovanje preskušanj.
Eden od izzivov teh modelov je njihova velikost. Tako LLM kot pLM sta se v zadnjih nekaj letih povečala za stopnje velikosti, kot je prikazano na naslednji sliki. To pomeni, da lahko traja dolgo časa, da jih usposobimo za zadostno natančnost. Pomeni tudi, da morate za shranjevanje parametrov modela uporabiti strojno opremo, zlasti grafične procesorje, z veliko količino pomnilnika.
Dolgi časi usposabljanja in veliki primeri so enaki visokim stroškom, zaradi katerih je lahko to delo za mnoge raziskovalce nedosegljivo. Na primer, leta 2023 je a raziskovalna skupina opisal usposabljanje pLM s 100 milijardami parametrov na 768 grafičnih procesorjih A100 za 164 dni! Na srečo lahko v mnogih primerih prihranimo čas in vire s prilagoditvijo obstoječega pLM-ja naši specifični nalogi. Ta tehnika se imenuje fina nastavitev, prav tako pa nam omogoča izposojo naprednih orodij iz drugih vrst jezikovnega modeliranja.
Pregled rešitev
Poseben problem, ki ga obravnavamo v tej objavi, je subcelična lokalizacija: Ali lahko glede na zaporedje beljakovin zgradimo model, ki lahko predvidi, ali živi zunaj (celična membrana) ali znotraj celice? To je pomemben podatek, ki nam lahko pomaga razumeti funkcijo in ali bi bila dobra tarča za zdravilo.
Začnemo s prenosom javnega nabora podatkov z uporabo Amazon SageMaker Studio. Nato uporabimo SageMaker za natančno nastavitev modela proteinskega jezika ESM-2 z učinkovito metodo usposabljanja. Na koncu uvedemo model kot končno točko sklepanja v realnem času in ga uporabimo za testiranje nekaterih znanih proteinov. Naslednji diagram ponazarja ta potek dela.
V naslednjih razdelkih gremo skozi korake za pripravo vaših podatkov o usposabljanju, ustvarjanje skripta za usposabljanje in izvajanje opravila usposabljanja SageMaker. Vsa koda, predstavljena v tej objavi, je na voljo na GitHub.
Pripravite podatke o usposabljanju
Uporabljamo del Nabor podatkov DeepLoc-2, ki vsebuje več tisoč proteinov SwissProt z eksperimentalno določenimi lokacijami. Filtriramo za visokokakovostna zaporedja med 100–512 aminokislinami:
df = pd.read_csv(
"https://services.healthtech.dtu.dk/services/DeepLoc-2.0/data/Swissprot_Train_Validation_dataset.csv"
).drop(["Unnamed: 0", "Partition"], axis=1)
df["Membrane"] = df["Membrane"].astype("int32")
# filter for sequences between 100 and 512 amino acides
df = df[df["Sequence"].apply(lambda x: len(x)).between(100, 512)]
# Remove unnecessary features
df = df[["Sequence", "Kingdom", "Membrane"]]
Nato zaporedja tokeniziramo in jih razdelimo na nize za usposabljanje in vrednotenje:
dataset = Dataset.from_pandas(df).train_test_split(test_size=0.2, shuffle=True)
tokenizer = AutoTokenizer.from_pretrained("facebook/esm2_t33_650M_UR50D")
def preprocess_data(examples, max_length=512):
text = examples["Sequence"]
encoding = tokenizer(text, truncation=True, max_length=max_length)
encoding["labels"] = examples["Membrane"]
return encoding
encoded_dataset = dataset.map(
preprocess_data,
batched=True,
num_proc=os.cpu_count(),
remove_columns=dataset["train"].column_names,
)
encoded_dataset.set_format("torch")
Na koncu naložimo obdelane podatke o usposabljanju in ocenjevanju v Preprosta storitev shranjevanja Amazon (Amazon S3):
train_s3_uri = S3_PATH + "/data/train"
test_s3_uri = S3_PATH + "/data/test"
encoded_dataset["train"].save_to_disk(train_s3_uri)
encoded_dataset["test"].save_to_disk(test_s3_uri)
Ustvarite skript za usposabljanje
Skriptni način SageMaker omogoča zagon kode za usposabljanje po meri v vsebnikih ogrodja optimiziranega strojnega učenja (ML), ki jih upravlja AWS. Za ta primer prilagodimo an obstoječi skript za razvrščanje besedil od Hugging Face. To nam omogoča, da preizkusimo več metod za izboljšanje učinkovitosti našega usposabljanja.
Metoda 1: Uteženi tečaj vadbe
Tako kot mnogi nabori bioloških podatkov so tudi podatki DeepLoc neenakomerno porazdeljeni, kar pomeni, da ni enakega števila membranskih in nemembranskih proteinov. Lahko bi ponovno vzorčili naše podatke in zavrgli zapise iz večinskega razreda. Vendar bi to zmanjšalo skupne podatke o usposabljanju in potencialno škodovalo naši natančnosti. Namesto tega med treningom izračunamo uteži razreda in jih uporabimo za prilagajanje izgube.
V našem skriptu za usposabljanje razvrščamo podrazred Trainer
razred od transformers
z WeightedTrainer
razred, ki pri izračunu navzkrižne entropijske izgube upošteva uteži razredov. To pomaga preprečiti pristranskost v našem modelu:
class WeightedTrainer(Trainer):
def __init__(self, class_weights, *args, **kwargs):
self.class_weights = class_weights
super().__init__(*args, **kwargs)
def compute_loss(self, model, inputs, return_outputs=False):
labels = inputs.pop("labels")
outputs = model(**inputs)
logits = outputs.get("logits")
loss_fct = torch.nn.CrossEntropyLoss(
weight=torch.tensor(self.class_weights, device=model.device)
)
loss = loss_fct(logits.view(-1, self.model.config.num_labels), labels.view(-1))
return (loss, outputs) if return_outputs else loss
2. način: Gradientno kopičenje
Gradientno kopičenje je tehnika usposabljanja, ki modelom omogoča simulacijo usposabljanja na večjih serijah. Običajno je velikost serije (število vzorcev, uporabljenih za izračun gradienta v enem koraku usposabljanja) omejena z zmogljivostjo pomnilnika GPE. Pri kopičenju gradientov model najprej izračuna gradiente na manjših serijah. Nato se namesto takojšnje posodobitve uteži modela gradienti kopičijo v več majhnih serijah. Ko so zbrani gradienti enaki ciljni večji velikosti serije, se izvede korak optimizacije za posodobitev modela. To omogoča modelom usposabljanje z dejansko večjimi serijami, ne da bi presegli omejitev pomnilnika GPE.
Vendar je za prehode naprej in nazaj potreben dodaten izračun. Povečane velikosti serij prek gradientnega kopičenja lahko upočasnijo usposabljanje, zlasti če se uporabi preveč korakov kopičenja. Cilj je čim bolj povečati uporabo GPE, vendar se izogniti čezmernim upočasnitvam zaradi preveč dodatnih korakov računanja gradienta.
3. način: Gradientna kontrolna točka
Gradient checkpointing je tehnika, ki zmanjša pomnilnik, potreben med treningom, hkrati pa ohranja razumen računski čas. Velike nevronske mreže zavzamejo veliko pomnilnika, ker morajo shraniti vse vmesne vrednosti iz prehoda naprej, da lahko izračunajo gradiente med prehodom nazaj. To lahko povzroči težave s pomnilnikom. Ena od rešitev je, da teh vmesnih vrednosti ne shranimo, potem pa jih je treba med prehodom nazaj preračunati, kar vzame veliko časa.
Prelivanje kontrolnih točk zagotavlja uravnotežen pristop. Shrani le nekatere vmesne vrednosti, imenovane kontrolne točkein po potrebi preračuna druge. Zato porabi manj pomnilnika kot shranjevanje vsega, a tudi manj računanja kot ponovno izračunavanje vsega. S strateško izbiro aktivacij za kontrolno točko gradientno kontrolno točko omogoča urjenje velikih nevronskih mrež z obvladljivo uporabo pomnilnika in časom računanja. Ta pomembna tehnika omogoča usposabljanje zelo velikih modelov, ki bi sicer imeli pomnilniške omejitve.
V našem skriptu za usposabljanje vklopimo aktivacijo gradienta in kontrolne točke tako, da dodamo potrebne parametre v TrainingArguments
predmet:
from transformers import TrainingArguments
training_args = TrainingArguments(
gradient_accumulation_steps=4,
gradient_checkpointing=True
)
Metoda 4: Nizka prilagoditev LLM
Veliki jezikovni modeli, kot je ESM-2, lahko vsebujejo milijarde parametrov, ki jih je drago trenirati in izvajati. raziskovalci je razvil metodo usposabljanja, imenovano Low-Rank Adaptation (LoRA), da bi natančnejša nastavitev teh ogromnih modelov postala učinkovitejša.
Ključna ideja za LoRA je, da vam pri natančnem prilagajanju modela za določeno nalogo ni treba posodobiti vseh izvirnih parametrov. Namesto tega LoRA modelu doda nove manjše matrike, ki preoblikujejo vhode in izhode. Samo te manjše matrike se posodobijo med fino nastavitvijo, ki je veliko hitrejša in porabi manj pomnilnika. Prvotni parametri modela ostanejo zamrznjeni.
Po fini nastavitvi z LoRA lahko združite majhne prilagojene matrice nazaj v izvirni model. Lahko pa jih hranite ločeno, če želite hitro prilagoditi model za druge naloge, ne da bi pozabili prejšnje. Na splošno LoRA omogoča LLM-jem, da se učinkovito prilagodijo novim nalogam za delček običajnih stroškov.
V našem skriptu za usposabljanje konfiguriramo LoRA z uporabo PEFT
knjižnica iz Hugging Face:
from peft import get_peft_model, LoraConfig, TaskType
import torch
from transformers import EsmForSequenceClassification
model = EsmForSequenceClassification.from_pretrained(
“facebook/esm2_t33_650M_UR50D”,
Torch_dtype=torch.bfloat16,
Num_labels=2,
)
peft_config = LoraConfig(
task_type=TaskType.SEQ_CLS,
inference_mode=False,
bias="none",
r=8,
lora_alpha=16,
lora_dropout=0.05,
target_modules=[
"query",
"key",
"value",
"EsmSelfOutput.dense",
"EsmIntermediate.dense",
"EsmOutput.dense",
"EsmContactPredictionHead.regression",
"EsmClassificationHead.dense",
"EsmClassificationHead.out_proj",
]
)
model = get_peft_model(model, peft_config)
Predložite nalogo usposabljanja SageMaker
Ko definirate skript za usposabljanje, lahko konfigurirate in oddate opravilo za usposabljanje SageMaker. Najprej določite hiperparametre:
hyperparameters = {
"model_id": "facebook/esm2_t33_650M_UR50D",
"epochs": 1,
"per_device_train_batch_size": 8,
"gradient_accumulation_steps": 4,
"use_gradient_checkpointing": True,
"lora": True,
}
Nato določite, katere meritve želite zajeti iz dnevnikov usposabljanja:
metric_definitions = [
{"Name": "epoch", "Regex": "'epoch': ([0-9.]*)"},
{
"Name": "max_gpu_mem",
"Regex": "Max GPU memory use during training: ([0-9.e-]*) MB",
},
{"Name": "train_loss", "Regex": "'loss': ([0-9.e-]*)"},
{
"Name": "train_samples_per_second",
"Regex": "'train_samples_per_second': ([0-9.e-]*)",
},
{"Name": "eval_loss", "Regex": "'eval_loss': ([0-9.e-]*)"},
{"Name": "eval_accuracy", "Regex": "'eval_accuracy': ([0-9.e-]*)"},
]
Nazadnje definirajte ocenjevalnik Hugging Face in ga pošljite v usposabljanje na vrsti primerka ml.g5.2xlarge. To je stroškovno učinkovita vrsta primerka, ki je na voljo v številnih regijah AWS:
from sagemaker.experiments.run import Run
from sagemaker.huggingface import HuggingFace
from sagemaker.inputs import TrainingInput
hf_estimator = HuggingFace(
base_job_name="esm-2-membrane-ft",
entry_point="lora-train.py",
source_dir="scripts",
instance_type="ml.g5.2xlarge",
instance_count=1,
transformers_version="4.28",
pytorch_version="2.0",
py_version="py310",
output_path=f"{S3_PATH}/output",
role=sagemaker_execution_role,
hyperparameters=hyperparameters,
metric_definitions=metric_definitions,
checkpoint_local_path="/opt/ml/checkpoints",
sagemaker_session=sagemaker_session,
keep_alive_period_in_seconds=3600,
tags=[{"Key": "project", "Value": "esm-fine-tuning"}],
)
with Run(
experiment_name=EXPERIMENT_NAME,
sagemaker_session=sagemaker_session,
) as run:
hf_estimator.fit(
{
"train": TrainingInput(s3_data=train_s3_uri),
"test": TrainingInput(s3_data=test_s3_uri),
}
)
Naslednja tabela primerja različne metode usposabljanja, o katerih smo razpravljali, in njihov učinek na čas izvajanja, natančnost in zahteve glede pomnilnika GPE našega dela.
konfiguracija | Obračunski čas (min) | Natančnost vrednotenja | Največja uporaba pomnilnika GPE (GB) |
Osnovni model | 28 | 0.91 | 22.6 |
Osnova + GA | 21 | 0.90 | 17.8 |
Osnova + GC | 29 | 0.91 | 10.2 |
Osnova + LoRA | 23 | 0.90 | 18.6 |
Vse metode so ustvarile modele z visoko natančnostjo vrednotenja. Uporaba LoRA in gradientne aktivacije sta zmanjšala čas izvajanja (in stroške) za 18 % oziroma 25 %. Uporaba gradientne kontrolne točke je zmanjšala največjo porabo pomnilnika GPE za 55 %. Odvisno od vaših omejitev (stroški, čas, strojna oprema) je lahko eden od teh pristopov bolj smiseln kot drugi.
Vsaka od teh metod se dobro obnese sama po sebi, toda kaj se zgodi, če jih uporabimo v kombinaciji? Naslednja tabela povzema rezultate.
konfiguracija | Obračunski čas (min) | Natančnost vrednotenja | Največja uporaba pomnilnika GPE (GB) |
Vse metode | 12 | 0.80 | 3.3 |
V tem primeru opazimo 12-odstotno zmanjšanje natančnosti. Vendar pa smo zmanjšali čas izvajanja za 57 % in uporabo pomnilnika GPU za 85 %! To je ogromno zmanjšanje, ki nam omogoča usposabljanje na širokem naboru stroškovno učinkovitih vrst instanc.
Čiščenje
Če sledite v svojem računu AWS, izbrišite vse končne točke sklepanja v realnem času in podatke, ki ste jih ustvarili, da se izognete nadaljnjim bremenitvam.
predictor.delete_endpoint()
bucket = boto_session.resource("s3").Bucket(S3_BUCKET)
bucket.objects.filter(Prefix=S3_PREFIX).delete()
zaključek
V tej objavi smo pokazali, kako učinkovito natančno prilagoditi modele proteinskega jezika, kot je ESM-2, za znanstveno pomembno nalogo. Za več informacij o uporabi knjižnic Transformers in PEFT za usposabljanje pLMS si oglejte objave Globoko učenje z beljakovinami in ESMBind (ESMB): Nizka prilagoditev ESM-2 za napovedovanje mesta vezave na beljakovine na blogu Hugging Face. Več primerov uporabe strojnega učenja za napovedovanje lastnosti beljakovin najdete tudi v Odlična analiza beljakovin na AWS Repozitorij GitHub.
O Author
Brian Loyal je višji arhitekt rešitev AI/ML v skupini Global Healthcare and Life Sciences pri Amazon Web Services. Ima več kot 17 let izkušenj na področju biotehnologije in strojnega učenja ter strastno pomaga strankam pri reševanju genomskih in proteomskih izzivov. V prostem času uživa v kuhanju in jedi s prijatelji in družino.
- 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. Ogljik, CleanTech, Energija, Okolje, sončna energija, Ravnanje z odpadki. Dostopite tukaj.
- PlatoHealth. Obveščanje o biotehnologiji in kliničnih preskušanjih. Dostopite tukaj.
- vir: https://aws.amazon.com/blogs/machine-learning/efficiently-fine-tune-the-esm-2-protein-language-model-with-amazon-sagemaker/
- :ima
- : je
- :ne
- $GOR
- 07
- 1
- 100
- 17
- 20
- 2022
- 2023
- 22
- 28
- 3d
- 425
- 600
- 7
- 750
- 8
- a
- O meni
- Račun
- Nakopičeno
- akumulacija
- natančnost
- natančno
- Aktiviranje
- aktivacije
- prilagodijo
- prilagoditev
- prilagajanje
- dodajanje
- Naslov
- Dodaja
- napredno
- AI / ML
- Cilj
- vsi
- omogoča
- skupaj
- Abeceda
- Prav tako
- Amazon
- Amazon SageMaker
- Amazon Web Services
- zneski
- an
- Analiza
- analizirati
- in
- Še ena
- odgovor
- kaj
- pristop
- pristopi
- Arhitektura
- SE
- AS
- At
- Na voljo
- izogniti
- stran
- AWS
- nazaj
- uravnotežen
- BE
- ker
- zadaj
- med
- pristranskosti
- večji
- milijardah
- zavezujoče
- biotehnologije
- Blog
- telo
- sposodim
- tako
- Brian
- izgradnjo
- vendar
- by
- izračun
- izračuna
- izračun
- se imenuje
- CAN
- kapaciteta
- zajemanje
- primeru
- primeri
- Vzrok
- celica
- verige
- verige
- izziv
- izzivi
- znaki
- Stroški
- klepetalnice
- cenejša
- preveriti
- kemijske
- razred
- Koda
- kombinacija
- Podjetja
- računanje
- računalniški
- omejitve
- vsebujejo
- Zabojniki
- Vsebuje
- strošek
- stroškovno učinkovito
- bi
- ustvarjajo
- ustvaril
- po meri
- Stranke, ki so
- datum
- baze podatkov
- nabor podatkov
- zmanjša
- zmanjšala
- opredeliti
- opredeljen
- izkazati
- Dokazano
- Odvisno
- razporedi
- opisano
- Oblikovanje
- Kljub
- določi
- razvili
- Razvoj
- naprava
- diagram
- drugačen
- Odkritje
- razpravljali
- bolezen
- porazdeljena
- dont
- navzdol
- nalaganje
- drog
- Droge
- med
- vsak
- učinek
- učinkovito
- učinkovitosti
- učinkovite
- učinkovito
- bodisi
- ostalo
- omogoča
- kodiranje
- Končna točka
- ogromno
- epoha
- epohe
- enako
- enako
- zlasti
- Ocena
- Tudi
- vse
- Primer
- Primeri
- presega
- prekomerno
- obstoječih
- drago
- izkušnje
- Poskusi
- strokovno znanje
- raziskuje
- dodatna
- Obraz
- družina
- hitreje
- izvedljivo
- izrazit
- Lastnosti
- Nekaj
- Slika
- filter
- končno
- Najdi
- konec
- prva
- po
- za
- Na srečo
- Naprej
- ulomek
- Okvirni
- prijatelji
- iz
- zamrznjena
- funkcija
- nadalje
- dobili
- GitHub
- dana
- daje
- Globalno
- Go
- dobro
- GPU
- Grafične kartice
- gradienti
- goji
- se zgodi
- strojna oprema
- Imajo
- he
- zdravstveno varstvo
- HealthTech
- pomoč
- pomoč
- Pomaga
- visoka
- visoka kvaliteta
- njegov
- Kako
- Kako
- Vendar
- HTML
- http
- HTTPS
- velika
- HuggingFace
- človeškega
- Hurt
- Ideja
- if
- ponazarja
- uvoz
- Pomembno
- izboljšanju
- in
- vključuje
- povečal
- okužbe
- Podatki
- vhodi
- v notranjosti
- primer
- Namesto
- interakcijo
- v
- Vprašanja
- IT
- Job
- Imejte
- vzdrževanje
- Ključne
- Kraljestvo
- znano
- Oznake
- jezik
- velika
- večja
- učenje
- manj
- Lets
- knjižnice
- Knjižnica
- življenje
- Znanost o življenju
- Life Sciences
- kot
- LIMIT
- omejitve
- Limited
- živi
- Lokalizacija
- Lokacije
- Long
- dolgo časa
- off
- Sklop
- nizka
- Zvest
- stroj
- strojno učenje
- Stroji
- je
- Večina
- Znamka
- IZDELA
- obvladljiv
- upravlja
- več
- ogromen
- max
- Povečajte
- največja
- Maj ..
- kar pomeni,
- pomeni
- Spomin
- Spoji
- Metoda
- Metode
- Meritve
- minut
- ML
- Model
- modeliranje
- modeli
- molekularno
- več
- učinkovitejše
- premikanje
- mRNA
- veliko
- več
- Ime
- Narava
- potrebno
- Nimate
- potrebna
- omrežij
- Živčne
- nevronske mreže
- Novo
- Noben
- roman
- Številka
- predmet
- predmeti
- of
- on
- ONE
- tiste
- samo
- optimizacija
- optimizirana
- or
- Da
- naročila
- izvirno
- originalno
- Ostalo
- drugi
- drugače
- naši
- ven
- izhodi
- zunaj
- več
- Splošni
- lastne
- parametri
- del
- mimo
- vozovnice
- strastno
- preteklosti
- Izvedite
- opravljeno
- kos
- platon
- Platonova podatkovna inteligenca
- PlatoData
- Predvajaj
- plus
- mogoče
- Prispevek
- Prispevkov
- potencial
- potencialno
- napovedati
- Pripravimo
- preprečiti
- prejšnja
- problem
- Predelano
- Proizvedeno
- Projekt
- Lastnosti
- Beljakovine
- Beljakovine
- zagotavlja
- javnega
- dal
- poizvedba
- vprašanja
- hitro
- območje
- uvrstitev
- dosežejo
- v realnem času
- razumno
- evidence
- zmanjša
- Zmanjšana
- zmanjšuje
- Zmanjšanje
- regularni izraz
- regije
- pomembno
- odstrani
- zamenjajte
- Skladišče
- predstavljajo
- zastopan
- Zahteve
- raziskovalci
- viri
- oziroma
- odziva
- odgovorna
- Rezultati
- vrnitev
- Mnenja
- Pravica
- vloga
- Run
- runtime
- sagemaker
- prodaja
- Shrani
- Znanost
- ZNANOSTI
- znanstveno
- praska
- script
- skripte
- oddelki
- glej
- izbiranje
- SAMO
- višji
- Občutek
- ločena
- Zaporedje
- Storitve
- Kompleti
- več
- pokazale
- podobno
- Enostavno
- simulirati
- spletna stran
- Velikosti
- velikosti
- nekoliko drugačen
- počasi
- upočasnitve
- majhna
- manj
- Rešitev
- rešitve
- SOLVE
- nekaj
- vir
- specifična
- hitrost
- po delih
- standardna
- Začetek
- state-of-the-art
- bivanje
- vztrajno
- Korak
- Koraki
- shranjevanje
- trgovina
- shranjevanje
- Strateško
- String
- Struktura
- strukture
- predloži
- dovolj
- miza
- Bodite
- meni
- ciljna
- Cilji
- Naloga
- Naloge
- skupina
- tehnika
- tehnike
- Test
- besedilo
- kot
- da
- O
- njihove
- Njih
- sami
- POTEM
- terapevtiki
- Tukaj.
- zato
- te
- jih
- stvari
- ta
- tisoč
- skozi
- čas
- krat
- do
- tokenizirati
- tudi
- orodja
- baklo
- Skupaj za plačilo
- Vlak
- usposobljeni
- usposabljanje
- Transform
- transformatorji
- sojenje
- Res
- poskusite
- tuning
- OBRAT
- tip
- Vrste
- tipično
- razumeli
- NEIMENOVAN
- nepotrebna
- Nadgradnja
- posodobljeno
- posodabljanje
- us
- Uporaba
- ameriški dolar
- uporaba
- Rabljeni
- uporablja
- uporabo
- običajno
- vrednost
- Vrednote
- raznolikost
- zelo
- preko
- želeli
- we
- web
- spletne storitve
- Dobro
- so bili
- Kaj
- kdaj
- ali
- ki
- medtem
- široka
- Širok spekter
- pogosto
- z
- brez
- delo
- telovaditi
- potek dela
- bi
- pisni
- X
- let
- Vi
- Vaša rutina za
- zefirnet