Selles postituses demonstreerime, kuidas tõhusalt häälestada tipptasemel valgukeele mudelit (pLM), et ennustada valkude subtsellulaarset lokaliseerimist, kasutades Amazon SageMaker.
Valgud on keha molekulaarsed masinad, mis vastutavad kõige eest alates lihaste liigutamisest kuni infektsioonidele reageerimiseni. Vaatamata sellele mitmekesisusele on kõik valgud valmistatud korduvatest molekulide ahelatest, mida nimetatakse aminohapeteks. Inimese genoom kodeerib 20 standardset aminohapet, millest igaühel on veidi erinev keemiline struktuur. Neid saab tähistada tähestiku tähtedega, mis võimaldab meil analüüsida ja uurida valke tekstistringina. Valgujärjestuste ja -struktuuride tohutu arv annab valkudele nende laialdase kasutusvõimaluse.
Valgud mängivad olulist rolli ka ravimite väljatöötamisel, nii potentsiaalsete sihtmärkide kui ka raviainetena. Nagu on näidatud järgmises tabelis, olid paljud 2022. aastal enimmüüdud ravimid kas valgud (eriti antikehad) või muud molekulid, nagu mRNA, mis muudeti kehas valkudeks. Seetõttu peavad paljud bioteaduste teadlased vastama küsimustele valkude kohta kiiremini, odavamalt ja täpsemalt.
Nimi | Tootja | 2022. aasta globaalne müük (miljardeid USD) | Näidustused |
Seltskond | Pfizer / BioNTech | $40.8 | Covid-19 |
Spikevax | Kaasaegne | $21.8 | Covid-19 |
Humira | AbbVie | $21.6 | Artriit, Crohni tõbi ja teised |
Keytruda | Merck | $21.0 | Erinevad vähid |
Andmeallikas: Urquhart, L. 2022. aasta müügi järgi parimad ettevõtted ja ravimid. Nature Reviews Drug Discovery 22, 260–260 (2023).
Kuna me saame esindada valke märgijadadena, saame neid analüüsida algselt kirjakeele jaoks välja töötatud tehnikate abil. See hõlmab suuri keelemudeleid (LLM), mis on eelnevalt väljaõpetatud tohututele andmekogumitele, mida saab seejärel kohandada konkreetsete ülesannete jaoks, nagu teksti kokkuvõte või vestlusrobotid. Sarnaselt koolitatakse pLM-e eelnevalt suurtes valgujärjestuse andmebaasides, kasutades märgistamata, enesejärelevalvega õppimist. Me saame neid kohandada, et ennustada selliseid asju nagu valgu 3D-struktuur või kuidas see võib teiste molekulidega suhelda. Teadlased on isegi kasutanud pLM-e uute valkude nullist kujundamiseks. Need tööriistad ei asenda inimeste teaduslikke teadmisi, kuid neil on potentsiaal kiirendada eelkliinilist väljatöötamist ja uuringute kavandamist.
Nende mudelite üheks väljakutseks on nende suurus. Nii LLM-id kui ka pLM-id on viimastel aastatel kasvanud suurusjärgus, nagu on näidatud järgmisel joonisel. See tähendab, et nende piisava täpsusega treenimine võib võtta kaua aega. See tähendab ka seda, et mudeli parameetrite salvestamiseks peate kasutama suure mälumahuga riistvara, eriti GPU-sid.
Pikad koolitusajad ja suured eksemplarid on võrdne kõrgete kuludega, mis võib muuta selle töö paljude teadlaste jaoks kättesaamatuks. Näiteks 2023. aastal a uurimisrühm kirjeldas 100 miljardi parameetriga pLM-i treenimist 768 A100 GPU-l 164 päeva jooksul! Õnneks saame paljudel juhtudel säästa aega ja ressursse, kohandades olemasolevat pLM-i meie konkreetse ülesandega. Seda tehnikat nimetatakse peenhäälestus, ja võimaldab meil laenata täiustatud tööriistu ka teist tüüpi keelemudelitest.
Lahenduse ülevaade
Konkreetne probleem, mida selles postituses käsitleme, on subtsellulaarne lokaliseerimine: Kas me saame valgujärjestust arvestades luua mudeli, mis suudab ennustada, kas see elab raku välisküljel (rakumembraanil) või sees? See on oluline teave, mis aitab meil mõista selle funktsiooni ja seda, kas see oleks hea ravimi sihtmärk.
Alustuseks laadime alla avaliku andmestiku, kasutades Amazon SageMaker Studio. Seejärel kasutame ESM-2 valgukeele mudelit tõhusa treeningmeetodi abil SageMakeri abil. Lõpuks kasutame mudelit reaalajas järelduse lõpp-punktina ja kasutame seda mõne teadaoleva valgu testimiseks. Järgmine diagramm illustreerib seda töövoogu.
Järgmistes jaotistes käsitleme teie treeningandmete ettevalmistamise, treeningskripti loomise ja SageMakeri koolitustöö käivitamise samme. Kogu selles postituses olev kood on saadaval aadressil GitHub.
Valmistage ette treeningandmed
Kasutame osa DeepLoc-2 andmestik, mis sisaldab mitu tuhat SwissProt valku eksperimentaalselt määratud asukohtadega. Me filtreerime kvaliteetsete järjestuste jaoks vahemikus 100–512 aminohapet:
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"]]
Järgmisena märgistame järjestused ja jagame need koolitus- ja hindamiskomplektideks:
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")
Lõpuks laadime töödeldud koolitus- ja hindamisandmed üles aadressile Amazoni lihtne salvestusteenus (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)
Looge treeningskript
SageMakeri skriptirežiim võimaldab teil käitada kohandatud koolituskoodi optimeeritud masinõppe (ML) raamistiku konteinerites, mida haldab AWS. Selle näite jaoks kohandame an olemasolev skript teksti liigitamiseks alates Hugging Face. See võimaldab meil proovida mitmeid meetodeid oma koolitustöö tõhustamiseks.
1. meetod: kaalutud treeningklass
Nagu paljud bioloogilised andmekogumid, on DeepLoci andmed jaotunud ebaühtlaselt, mis tähendab, et membraanivalke ja mittemembraanseid valke pole võrdselt. Võiksime oma andmetest uuesti proovi võtta ja enamuse klassi kirjed ära visata. See aga vähendaks kogu treeninguandmeid ja võib kahjustada meie täpsust. Selle asemel arvutame treeningtöö käigus klassikaalud ja kasutame neid kaotuse korrigeerimiseks.
Oma koolitusskriptis jagame alamklassi Trainer
klassist alates transformers
koos WeightedTrainer
klass, mis võtab ristentroopiakao arvutamisel arvesse klasside kaalusid. See aitab vältida meie mudeli eelarvamusi:
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. meetod: gradiendi akumulatsioon
Gradiendi akumulatsioon on treeningtehnika, mis võimaldab mudelitel simuleerida treeningut suuremate partiide puhul. Tavaliselt on partii suurus (ühes treeningetapis gradiendi arvutamiseks kasutatud proovide arv) piiratud GPU mälumahuga. Gradientide akumuleerimisega arvutab mudel esmalt väiksemate partiide gradiendid. Siis, selle asemel, et kohe mudelikaalusid värskendada, kogunevad gradiendid mitme väikese partii peale. Kui akumuleeritud gradiendid on võrdsed sihtmärgi suurema partii suurusega, viiakse mudeli värskendamiseks läbi optimeerimisetapp. See võimaldab mudelitel treenida tõhusalt suuremate partiidega ilma GPU mälupiirangut ületamata.
Väiksema partii edasi- ja tagasikäigu jaoks on aga vaja täiendavat arvutust. Suurenenud partiide suurus gradiendi kogumise kaudu võib treeningut aeglustada, eriti kui kasutatakse liiga palju kogumise etappe. Eesmärk on maksimeerida GPU kasutust, kuid vältida liigset aeglustumist liiga paljudest täiendavatest gradiendi arvutamise sammudest.
3. meetod: gradiendi kontrollpunkti määramine
Gradiendi kontrollpunkti määramine on tehnika, mis vähendab treeningu ajal vajalikku mälu, hoides arvutusaja mõistlikuna. Suured närvivõrgud võtavad palju mälu, kuna nad peavad salvestama kõik vaheväärtused edasisuunalisest läbimisest, et arvutada gradiente tagasikäigu ajal. See võib põhjustada mäluprobleeme. Üks lahendus on neid vahepealseid väärtusi mitte salvestada, vaid siis tuleb need tagurpidi liikumise ajal ümber arvutada, mis võtab palju aega.
Gradiendi kontrollpunktide määramine pakub tasakaalustatud lähenemisviisi. See salvestab ainult mõned vaheväärtused, nn kontrollpunktidja arvutab vajaduse korral teised ümber. Seetõttu kasutab see vähem mälu kui kõige salvestamine, aga ka vähem arvutusi kui kõige ümberarvutamine. Valides strateegiliselt, milliseid aktiveerimisi kontrollpunkti viia, võimaldab gradiendi kontrollpunktide määramine suuri närvivõrke treenida hallatava mälukasutuse ja arvutusajaga. See oluline tehnika võimaldab treenida väga suuri mudeleid, mis muidu sattuksid mälupiirangutesse.
Treeningskriptis lülitame sisse gradiendi aktiveerimise ja kontrollpunkti määramise, lisades vajalikud parameetrid TrainingArguments
objekt:
from transformers import TrainingArguments
training_args = TrainingArguments(
gradient_accumulation_steps=4,
gradient_checkpointing=True
)
4. meetod: LLM-ide madala tasemega kohandamine
Suured keelemudelid, nagu ESM-2, võivad sisaldada miljardeid parameetreid, mille treenimine ja käitamine on kulukas. Teadlased töötas välja koolitusmeetodi nimega Low-Rank Adaptation (LoRA), et muuta nende tohutute mudelite peenhäälestus tõhusamaks.
LoRA põhiidee seisneb selles, et konkreetse ülesande jaoks mudeli peenhäälestamisel ei pea te kõiki algseid parameetreid värskendama. Selle asemel lisab LoRA mudelile uued väiksemad maatriksid, mis muudavad sisendeid ja väljundeid. Peenhäälestuse käigus uuendatakse ainult neid väiksemaid maatrikseid, mis on palju kiirem ja kulutab vähem mälu. Algsed mudeli parameetrid jäävad külmutatuks.
Pärast LoRA-ga peenhäälestamist saate väikesed kohandatud maatriksid tagasi algsesse mudelisse liita. Või võite need eraldi hoida, kui soovite mudelit kiiresti muude ülesannete jaoks viimistleda, unustamata seejuures eelnevaid. Üldiselt võimaldab LoRA LLM-e tõhusalt kohandada uute ülesannetega, vaid murdosa tavakuludest.
Oma koolitusskriptis konfigureerime LoRA, kasutades PEFT
Hugging Face'i raamatukogu:
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)
Esitage SageMakeri koolitustöö
Pärast koolitusskripti määratlemist saate SageMakeri koolitustöö konfigureerida ja esitada. Esmalt määrake hüperparameetrid:
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,
}
Järgmisena määrake, millised mõõdikud treeninglogidest jäädvustada.
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-]*)"},
]
Lõpuks defineerige Kallistava näo hindaja ja esitage see ml.g5.2xlarge eksemplari tüübile koolituseks. See on kuluefektiivne eksemplari tüüp, mis on laialdaselt saadaval paljudes AWS-i piirkondades:
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),
}
)
Järgmises tabelis võrreldakse erinevaid koolitusmeetodeid, mida arutasime, ja nende mõju meie töö käitusajale, täpsusele ja GPU mälunõuetele.
konfiguratsioon | Arveldatav aeg (min) | Hindamise täpsus | Maksimaalne GPU mälukasutus (GB) |
Baasmudel | 28 | 0.91 | 22.6 |
Alus + GA | 21 | 0.90 | 17.8 |
Alus + GC | 29 | 0.91 | 10.2 |
Alus + LoRA | 23 | 0.90 | 18.6 |
Kõik meetodid andsid suure hindamistäpsusega mudeleid. LoRA ja gradiendi aktiveerimise kasutamine vähendas käitusaega (ja kulusid) vastavalt 18% ja 25%. Gradiendi kontrollpunkti kasutamine vähendas maksimaalset GPU mälukasutust 55%. Sõltuvalt teie piirangutest (kulu, aeg, riistvara) võib üks neist lähenemisviisidest olla mõttekam kui teine.
Kõik need meetodid toimivad hästi iseseisvalt, kuid mis juhtub, kui kasutame neid koos? Järgmises tabelis on tulemused kokku võetud.
konfiguratsioon | Arveldatav aeg (min) | Hindamise täpsus | Maksimaalne GPU mälukasutus (GB) |
Kõik meetodid | 12 | 0.80 | 3.3 |
Sel juhul näeme täpsuse vähenemist 12%. Kuid oleme vähendanud tööaega 57% ja GPU mälukasutust 85% võrra! See on tohutu langus, mis võimaldab meil treenida paljude kuluefektiivsete eksemplaritüüpide jaoks.
Koristage
Kui jälgite seda oma AWS-i kontol, kustutage täiendavate tasude vältimiseks kõik loodud reaalajas järelduste lõpp-punktid ja andmed.
predictor.delete_endpoint()
bucket = boto_session.resource("s3").Bucket(S3_BUCKET)
bucket.objects.filter(Prefix=S3_PREFIX).delete()
Järeldus
Selles postituses näitasime, kuidas teaduslikult olulise ülesande jaoks tõhusalt häälestada valgukeele mudeleid, nagu ESM-2. Transformerite ja PEFT-teekide kasutamise kohta pLMS-i koolitamiseks lisateabe saamiseks vaadake postitusi Sügav õppimine valkudega ja ESMBind (ESMB): ESM-2 madala asetusega kohandamine valgu sidumissaidi ennustamiseks Kallistava näo ajaveebis. Samuti leiate rohkem näiteid masinõppe kasutamisest valgu omaduste ennustamiseks Suurepärane AWS-i valguanalüüs GitHubi hoidla.
Teave Autor
Brian lojaalne on AI/ML lahenduste vanemarhitekt ettevõtte Amazon Web Services ülemaailmses tervishoiu- ja bioteaduste meeskonnas. Tal on enam kui 17-aastane kogemus biotehnoloogia ja masinõppe vallas ning ta soovib kirglikult aidata klientidel genoomseid ja proteoomilisi probleeme lahendada. Vabal ajal meeldib talle süüa teha ja sõprade ja perega süüa.
- SEO-põhise sisu ja PR-levi. Võimenduge juba täna.
- PlatoData.Network Vertikaalne generatiivne Ai. Jõustage ennast. Juurdepääs siia.
- PlatoAiStream. Web3 luure. Täiustatud teadmised. Juurdepääs siia.
- PlatoESG. Süsinik, CleanTech, Energia, Keskkond päikeseenergia, Jäätmekäitluse. Juurdepääs siia.
- PlatoTervis. Biotehnoloogia ja kliiniliste uuringute luureandmed. Juurdepääs siia.
- Allikas: https://aws.amazon.com/blogs/machine-learning/efficiently-fine-tune-the-esm-2-protein-language-model-with-amazon-sagemaker/
- :on
- :on
- :mitte
- $ UP
- 07
- 1
- 100
- 17
- 20
- 2022
- 2023
- 22
- 28
- 3d
- 425
- 600
- 7
- 750
- 8
- a
- MEIST
- konto
- Kogunenud
- kogunemine
- täpsus
- täpselt
- Aktiveerimine
- aktiveerimised
- kohandama
- kohandamine
- kohanemine
- lisades
- aadress
- Lisab
- edasijõudnud
- AI / ML
- eesmärk
- Materjal: BPA ja flataatide vaba plastik
- võimaldab
- mööda
- Tähestik
- Ka
- Amazon
- Amazon SageMaker
- Amazon Web Services
- summad
- an
- analüüs
- analüüsima
- ja
- Teine
- vastus
- mistahes
- lähenemine
- lähenemisviisid
- arhitektuur
- OLEME
- AS
- At
- saadaval
- vältima
- ära
- AWS
- tagasi
- tasakaalustatud
- BE
- sest
- taga
- vahel
- erapoolikus
- suurem
- miljardeid
- siduv
- biotehnoloogia
- Blogi
- keha
- laenama
- mõlemad
- Brian
- ehitama
- kuid
- by
- arvutama
- arvutab
- arvutamisel
- kutsutud
- CAN
- Võimsus
- lüüa
- juhul
- juhtudel
- Põhjus
- rakk
- kett
- ketid
- väljakutse
- väljakutseid
- märki
- koormuste
- jututoad
- odavam
- kontrollima
- keemiline
- klass
- kood
- kombinatsioon
- Ettevõtted
- arvutamine
- arvutuslik
- piiranguid
- sisaldama
- Konteinerid
- sisaldab
- Maksma
- kuluefektiivne
- võiks
- looma
- loodud
- tava
- Kliendid
- andmed
- andmebaasid
- andmekogumid
- vähenema
- vähenenud
- määratlema
- määratletud
- näitama
- Näidatud
- Olenevalt
- juurutada
- kirjeldatud
- Disain
- Vaatamata
- kindlaksmääratud
- arenenud
- & Tarkvaraarendus
- seade
- skeem
- erinev
- avastus
- arutatud
- haigus
- jagatud
- Ära
- alla
- allalaadimine
- uimasti
- Narkootikumide
- ajal
- iga
- mõju
- tõhusalt
- efektiivsus
- tõhus
- tõhusalt
- kumbki
- teine
- võimaldab
- kodeerimine
- Lõpp-punkt
- tohutu
- epohh
- ajajärgud
- võrdne
- Võrdub
- eriti
- hindamine
- Isegi
- kõik
- näide
- näited
- ületab
- ülemäärane
- olemasolevate
- kallis
- kogemus
- katseid
- teadmised
- uurima
- lisatasu
- nägu
- pere
- kiiremini
- teostatav
- Objekte
- FUNKTSIOONID
- vähe
- Joonis
- filtreerida
- Lõpuks
- leidma
- lõpp
- esimene
- Järel
- eest
- Õnneks
- edasi
- murdosa
- Raamistik
- sõbrad
- Alates
- külmutatud
- funktsioon
- edasi
- saama
- GitHub
- antud
- annab
- Globaalne
- Go
- hea
- GPU
- GPU
- kalded
- kasvanud
- juhtub
- riistvara
- Olema
- he
- tervishoid
- HealthTech
- aitama
- aidates
- aitab
- Suur
- kvaliteetne
- tema
- Kuidas
- Kuidas
- aga
- HTML
- http
- HTTPS
- tohutu
- Kallistav Nägu
- inim-
- Viga saanud
- idee
- if
- illustreerib
- import
- oluline
- Paranemist
- in
- hõlmab
- kasvanud
- nakkused
- info
- sisendite
- sees
- Näiteks
- selle asemel
- suhelda
- sisse
- küsimustes
- IT
- töö
- hoidma
- pidamine
- Võti
- Kuningriik
- teatud
- Labels
- keel
- suur
- suurem
- õppimine
- vähem
- Lets
- raamatukogud
- Raamatukogu
- elu
- Eluteadus
- Maaülikooli
- nagu
- LIMIT
- piirangud
- piiratud
- Elab
- lokaliseerimine
- kohad
- Pikk
- kaua aega
- kaotus
- Partii
- Madal
- Lojaalne
- masin
- masinõpe
- masinad
- tehtud
- Enamus
- tegema
- TEEB
- juhitav
- juhitud
- palju
- suur
- max
- Maksimeerima
- maksimaalne
- mai..
- tähendus
- vahendid
- Mälu
- Merge
- meetod
- meetodid
- Meetrika
- minutit
- ML
- mudel
- modelleerimine
- mudelid
- molekulaarne
- rohkem
- tõhusam
- liikuv
- mRNA
- palju
- mitmekordne
- nimi
- loodus
- vajalik
- Vajadus
- vaja
- võrgustikud
- närvi-
- närvivõrgud
- Uus
- mitte ükski
- romaan
- number
- objekt
- esemeid
- of
- on
- ONE
- ones
- ainult
- optimeerimine
- optimeeritud
- or
- et
- tellimuste
- originaal
- algselt
- Muu
- teised
- muidu
- meie
- välja
- väljundid
- väljaspool
- üle
- üldine
- enda
- parameetrid
- osa
- sooritama
- möödub
- kirglik
- minevik
- täitma
- teostatud
- tükk
- Platon
- Platoni andmete intelligentsus
- PlatoData
- mängima
- pluss
- võimalik
- post
- Postitusi
- potentsiaal
- potentsiaalselt
- ennustada
- Valmistama
- vältida
- eelmine
- Probleem
- Töödeldud
- Toodetud
- projekt
- omadused
- Valk
- Valgud
- annab
- avalik
- panema
- päringu
- Küsimused
- kiiresti
- valik
- auaste
- jõudma
- reaalajas
- mõistlik
- andmed
- vähendama
- Lühendatud
- vähendab
- vähendamine
- regulaaravaldis
- piirkondades
- asjakohane
- kõrvaldama
- asendama
- Hoidla
- esindama
- esindatud
- Nõuded
- Teadlased
- Vahendid
- vastavalt
- vastates
- vastutav
- Tulemused
- tagasipöördumine
- Arvustused
- õige
- Roll
- jooks
- runtime
- salveitegija
- müük
- Säästa
- teadus
- TEADUSED
- teaduslik
- kriimustada
- käsikiri
- skripte
- lõigud
- vaata
- valides
- SELF
- vanem
- tunne
- eri
- Jada
- Teenused
- Komplektid
- mitu
- näidatud
- Samamoodi
- lihtne
- simuleerima
- site
- SUURUS
- suurused
- veidi erinev
- aeglane
- aeglustused
- väike
- väiksem
- lahendus
- Lahendused
- LAHENDAGE
- mõned
- allikas
- konkreetse
- kiirus
- jagada
- standard
- algus
- modernne
- jääma
- püsivalt
- Samm
- Sammud
- ladustamine
- salvestada
- ladustamine
- Strateegiliselt
- nöör
- struktuur
- struktuuride
- esitama
- piisav
- tabel
- Võtma
- võtab
- sihtmärk
- eesmärgid
- Ülesanne
- ülesanded
- meeskond
- tehnika
- tehnikat
- test
- tekst
- kui
- et
- .
- oma
- Neile
- ennast
- SIIS
- ravimid
- Seal.
- seetõttu
- Need
- nad
- asjad
- see
- tuhat
- Läbi
- aeg
- korda
- et
- märkima
- liiga
- töövahendid
- tõrvik
- Summa
- Rong
- koolitatud
- koolitus
- Muutma
- trafod
- kohtuprotsess
- tõsi
- püüdma
- häälestamine
- Pöörake
- tüüp
- liigid
- tüüpiliselt
- mõistma
- NIMETAMATA
- tarbetu
- Värskendused
- ajakohastatud
- ajakohastamine
- us
- Kasutus
- USD
- kasutama
- Kasutatud
- kasutusalad
- kasutamine
- tavaline
- väärtus
- Väärtused
- sort
- väga
- kaudu
- tahan
- we
- web
- veebiteenused
- Hästi
- olid
- M
- millal
- kas
- mis
- kuigi
- lai
- Lai valik
- laialdaselt
- koos
- ilma
- Töö
- treening
- töövoog
- oleks
- kirjalik
- X
- aastat
- sa
- Sinu
- sephyrnet