În această postare, demonstrăm cum să reglam eficient un model de limbaj proteic (pLM) de ultimă generație pentru a prezice localizarea subcelulară a proteinei folosind Amazon SageMaker.
Proteinele sunt mașinile moleculare ale corpului, responsabile pentru orice, de la mișcarea mușchilor până la răspunsul la infecții. În ciuda acestei varietăți, toate proteinele sunt formate din lanțuri repetate de molecule numite aminoacizi. Genomul uman codifică 20 de aminoacizi standard, fiecare cu o structură chimică ușor diferită. Acestea pot fi reprezentate prin litere ale alfabetului, ceea ce ne permite apoi să analizăm și să explorăm proteinele ca șir de text. Numărul enorm posibil de secvențe și structuri de proteine este ceea ce conferă proteinelor varietatea lor largă de utilizări.
Proteinele joacă, de asemenea, un rol cheie în dezvoltarea medicamentelor, ca ținte potențiale, dar și ca agenți terapeutici. După cum se arată în tabelul următor, multe dintre cele mai vândute medicamente în 2022 au fost fie proteine (în special anticorpi), fie alte molecule precum ARNm traduse în proteine în organism. Din acest motiv, mulți cercetători în știința vieții trebuie să răspundă la întrebările despre proteine mai rapid, mai ieftin și mai precis.
Nume si Prenume | Producător | Vânzări globale 2022 (miliarde USD) | Indicatii |
comirnaty | Pfizer / BioNTech | $40.8 | Covid-19 |
Spikevax | modern | $21.8 | Covid-19 |
Humira | Abbvie | $21.6 | Artrita, boala Crohn și altele |
keytruda | Merck | $21.0 | Diverse tipuri de cancer |
Sursa datelor: Urquhart, L. Top companii și medicamente după vânzări în 2022. Nature Reviews Drug Discovery 22, 260–260 (2023).
Deoarece putem reprezenta proteinele ca secvențe de caractere, le putem analiza folosind tehnici dezvoltate inițial pentru limbajul scris. Acestea includ modele de limbaj mari (LLM) preantrenate pe seturi de date uriașe, care pot fi apoi adaptate pentru sarcini specifice, cum ar fi rezumarea textului sau chatbots. În mod similar, pLM-urile sunt pre-antrenate pe baze de date mari de secvențe de proteine folosind învățarea neetichetată, auto-supravegheată. Le putem adapta pentru a prezice lucruri precum structura 3D a unei proteine sau modul în care aceasta poate interacționa cu alte molecule. Cercetătorii au folosit chiar și pLM-uri pentru a proiecta proteine noi de la zero. Aceste instrumente nu înlocuiesc expertiza științifică umană, dar au potențialul de a accelera dezvoltarea preclinic și proiectarea studiilor.
O provocare cu aceste modele este dimensiunea lor. Atât LLM-urile, cât și pLM-urile au crescut cu ordine de mărime în ultimii câțiva ani, așa cum este ilustrat în figura următoare. Aceasta înseamnă că poate dura mult timp pentru a le antrena la o precizie suficientă. De asemenea, înseamnă că trebuie să utilizați hardware, în special GPU-uri, cu cantități mari de memorie pentru a stoca parametrii modelului.
Timpii lungi de antrenament, plus cazurile mari, echivalează cu costuri ridicate, ceea ce poate pune această muncă la îndemâna multor cercetători. De exemplu, în 2023, a Echipa de cercetare a descris antrenarea unui pLM cu 100 de miliarde de parametri pe 768 de GPU-uri A100 timp de 164 de zile! Din fericire, în multe cazuri, putem economisi timp și resurse adaptând un PLM existent la sarcina noastră specifică. Această tehnică se numește reglaj fin, și, de asemenea, ne permite să împrumutăm instrumente avansate de la alte tipuri de modelare lingvistică.
Prezentare generală a soluțiilor
Problema specifică pe care o abordăm în această postare este localizare subcelulară: Având în vedere o secvență de proteine, putem construi un model care poate prezice dacă trăiește în exterior (membrana celulară) sau în interiorul unei celule? Aceasta este o informație importantă care ne poate ajuta să înțelegem funcția și dacă ar fi o țintă bună pentru droguri.
Începem prin a descărca un set de date public folosind Amazon SageMaker Studio. Apoi folosim SageMaker pentru a regla fin modelul de limbaj al proteinelor ESM-2 folosind o metodă eficientă de antrenament. În cele din urmă, implementăm modelul ca punct final de inferență în timp real și îl folosim pentru a testa unele proteine cunoscute. Următoarea diagramă ilustrează acest flux de lucru.
În secțiunile următoare, parcurgem pașii pentru a vă pregăti datele de antrenament, a crea un script de antrenament și a rula un job de instruire SageMaker. Tot codul prezentat în această postare este disponibil pe GitHub.
Pregătiți datele de antrenament
Folosim o parte din Setul de date DeepLoc-2, care conține câteva mii de proteine SwissProt cu locații determinate experimental. Filtrăm pentru secvențe de înaltă calitate între 100-512 aminoacizi:
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"]]
Apoi, tokenizăm secvențele și le împărțim în seturi de instruire și evaluare:
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")
În cele din urmă, încărcăm datele de instruire și evaluare procesate în Serviciul Amazon de stocare simplă (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)
Creați un script de antrenament
Modul script SageMaker vă permite să rulați codul personalizat de antrenament în containere cadru optimizate de învățare automată (ML) gestionate de AWS. Pentru acest exemplu, adaptăm un scriptul existent pentru clasificarea textului din Hugging Face. Acest lucru ne permite să încercăm mai multe metode de îmbunătățire a eficienței muncii noastre de formare.
Metoda 1: Clasa de antrenament ponderat
La fel ca multe seturi de date biologice, datele DeepLoc sunt distribuite inegal, ceea ce înseamnă că nu există un număr egal de proteine membranare și non-membrane. Ne-am putea reeșantiona datele și să aruncăm înregistrările din clasa majoritară. Cu toate acestea, acest lucru ar reduce totalul datelor de antrenament și ar putea afecta acuratețea noastră. În schimb, calculăm greutățile clasei în timpul activității de antrenament și le folosim pentru a ajusta pierderea.
În scriptul nostru de antrenament, subclasăm Trainer
clasa de la transformers
cu WeightedTrainer
clasă care ia în considerare ponderile clasei la calcularea pierderii de entropie încrucișată. Acest lucru ajută la prevenirea părtinirii în modelul nostru:
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
Metoda 2: Acumularea gradientului
Acumularea gradientului este o tehnică de antrenament care permite modelelor să simuleze antrenamentul pe loturi mai mari. De obicei, dimensiunea lotului (numărul de mostre utilizate pentru a calcula gradientul într-un singur pas de antrenament) este limitată de capacitatea memoriei GPU. Cu acumularea de gradient, modelul calculează mai întâi gradienții pe loturi mai mici. Apoi, în loc să actualizezi greutățile modelului imediat, gradienții se acumulează pe mai multe loturi mici. Când gradienții acumulați egalează dimensiunea țintă a lotului mai mare, pasul de optimizare este efectuat pentru a actualiza modelul. Acest lucru permite modelelor să se antreneze cu loturi efectiv mai mari, fără a depăși limita de memorie GPU.
Cu toate acestea, este nevoie de calcul suplimentar pentru loturile mai mici de trecere înainte și înapoi. Dimensiunile crescute ale loturilor prin acumularea gradientului pot încetini antrenamentul, mai ales dacă se folosesc prea mulți pași de acumulare. Scopul este de a maximiza utilizarea GPU-ului, dar a evita încetinirile excesive de la prea mulți pași suplimentari de calcul al gradientului.
Metoda 3: Punct de control în gradient
Punctul de control în gradient este o tehnică care reduce memoria necesară în timpul antrenamentului, păstrând în același timp timpul de calcul rezonabil. Rețelele neuronale mari ocupă multă memorie deoarece trebuie să stocheze toate valorile intermediare din trecerea înainte pentru a calcula gradienții în timpul trecerii înapoi. Acest lucru poate cauza probleme de memorie. O soluție este să nu stocați aceste valori intermediare, dar apoi trebuie să fie recalculate în timpul trecerii înapoi, ceea ce necesită mult timp.
Punctul de control în gradient oferă o abordare echilibrată. Salvează doar câteva dintre valorile intermediare, numite puncte de control, și le recalculează pe celelalte după cum este necesar. Prin urmare, folosește mai puțină memorie decât stocarea totul, dar și mai puține calcule decât recalcularea totul. Prin selectarea strategică a activărilor pentru punctul de control, punctul de control în gradient permite antrenarea rețelelor neuronale mari cu o utilizare gestionabilă a memoriei și timp de calcul. Această tehnică importantă face posibilă antrenarea unor modele foarte mari care altfel ar avea limite de memorie.
În scriptul nostru de antrenament, activăm activarea gradientului și punctele de control adăugând parametrii necesari la TrainingArguments
obiect:
from transformers import TrainingArguments
training_args = TrainingArguments(
gradient_accumulation_steps=4,
gradient_checkpointing=True
)
Metoda 4: Adaptarea de rang scăzut a LLM-urilor
Modelele de limbaj mari precum ESM-2 pot conține miliarde de parametri care sunt scumpi de antrenat și de rulat. Cercetatorii a dezvoltat o metodă de antrenament numită Low-Rank Adaptation (LoRA) pentru a face reglarea fină a acestor modele uriașe mai eficientă.
Ideea cheie din spatele LoRA este că atunci când reglați fin un model pentru o anumită sarcină, nu este nevoie să actualizați toți parametrii inițiali. În schimb, LoRA adaugă noi matrice mai mici modelului care transformă intrările și ieșirile. Doar aceste matrice mai mici sunt actualizate în timpul reglajului fin, care este mult mai rapid și utilizează mai puțină memorie. Parametrii modelului original rămân înghețați.
După reglarea fină cu LoRA, puteți îmbina micile matrici adaptate înapoi în modelul original. Sau le puteți păstra separate dacă doriți să reglați rapid modelul pentru alte sarcini, fără a le uita pe cele anterioare. În general, LoRA permite LLM-urilor să fie adaptate eficient la sarcini noi la o fracțiune din costul obișnuit.
În scriptul nostru de antrenament, configurăm LoRA utilizând PEFT
biblioteca din 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)
Trimiteți un job de formare SageMaker
După ce ați definit scriptul de antrenament, puteți configura și trimite un job de instruire SageMaker. Mai întâi, specificați hiperparametrii:
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,
}
Apoi, definiți ce valori să captați din jurnalele de antrenament:
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-]*)"},
]
În cele din urmă, definiți un estimator Hugging Face și trimiteți-l pentru antrenament pe un tip de instanță ml.g5.2xlarge. Acesta este un tip de instanță rentabil care este disponibil pe scară largă în multe regiuni 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),
}
)
Următorul tabel compară diferitele metode de antrenament pe care le-am discutat și efectul acestora asupra duratei de rulare, acurateței și cerințelor de memorie GPU ale jobului nostru.
Configuraţie | Timp facturabil (min) | Precizia evaluării | Utilizare maximă a memoriei GPU (GB) |
Model de bază | 28 | 0.91 | 22.6 |
Baza + GA | 21 | 0.90 | 17.8 |
Baza + GC | 29 | 0.91 | 10.2 |
Baza + LoRA | 23 | 0.90 | 18.6 |
Toate metodele au produs modele cu o precizie ridicată de evaluare. Utilizarea LoRA și activarea gradientului a redus timpul de rulare (și costul) cu 18%, respectiv 25%. Utilizarea punctului de control în gradient a redus utilizarea maximă a memoriei GPU cu 55%. În funcție de constrângerile dvs. (cost, timp, hardware), una dintre aceste abordări poate avea mai mult sens decât alta.
Fiecare dintre aceste metode funcționează bine de la sine, dar ce se întâmplă atunci când le folosim în combinație? Următorul tabel rezumă rezultatele.
Configuraţie | Timp facturabil (min) | Precizia evaluării | Utilizare maximă a memoriei GPU (GB) |
Toate metodele | 12 | 0.80 | 3.3 |
În acest caz, vedem o reducere de 12% a preciziei. Cu toate acestea, am redus timpul de rulare cu 57% și utilizarea memoriei GPU cu 85%! Aceasta este o scădere masivă care ne permite să ne instruim pe o gamă largă de tipuri de instanțe rentabile.
A curăța
Dacă urmăriți în propriul cont AWS, ștergeți toate punctele finale de inferență în timp real și datele pe care le-ați creat pentru a evita alte taxe.
predictor.delete_endpoint()
bucket = boto_session.resource("s3").Bucket(S3_BUCKET)
bucket.objects.filter(Prefix=S3_PREFIX).delete()
Concluzie
În această postare, am demonstrat cum să ajustam eficient modelele de limbaj proteic precum ESM-2 pentru o sarcină relevantă din punct de vedere științific. Pentru mai multe informații despre utilizarea bibliotecilor Transformers și PEFT pentru a antrena pLMS, consultați postările Învățare profundă cu proteine și ESMBind (ESMB): Adaptarea de rang scăzut a ESM-2 pentru predicția site-ului de legare a proteinelor pe blogul Hugging Face. De asemenea, puteți găsi mai multe exemple de utilizare a învățării automate pentru a prezice proprietățile proteinelor în Analiză uimitoare a proteinelor pe AWS Depozitul GitHub.
Despre autor
Brian Loyal este arhitect senior de soluții AI/ML în echipa Global Healthcare și Life Sciences de la Amazon Web Services. Are o experiență de peste 17 ani în biotehnologie și învățare automată și este pasionat de a ajuta clienții să rezolve provocările genomice și proteomice. În timpul liber, îi place să gătească și să mănânce cu prietenii și familia.
- 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/efficiently-fine-tune-the-esm-2-protein-language-model-with-amazon-sagemaker/
- :are
- :este
- :nu
- $UP
- 07
- 1
- 100
- 17
- 20
- 2022
- 2023
- 22
- 28
- 3d
- 425
- 600
- 7
- 750
- 8
- a
- Despre Noi
- Cont
- acumulate
- acumulare
- precizie
- precis
- Activarea
- activări
- adapta
- adaptare
- de adaptare
- adăugare
- adresa
- Adaugă
- avansat
- AI / ML
- urmări
- TOATE
- permite
- de-a lungul
- Alfabet
- de asemenea
- Amazon
- Amazon SageMaker
- Amazon Web Services
- Sume
- an
- analiză
- analiza
- și
- O alta
- răspunde
- Orice
- abordare
- abordari
- arhitectură
- SUNT
- AS
- At
- disponibil
- evita
- departe
- AWS
- înapoi
- echilibrat
- BE
- deoarece
- în spatele
- între
- părtinire
- mai mare
- miliarde
- legare
- biotehnologie
- Blog
- corp
- împrumuta
- atât
- Brian
- construi
- dar
- by
- calcula
- calculează
- calcularea
- denumit
- CAN
- Capacitate
- captura
- caz
- cazuri
- Provoca
- celulă
- lanţ
- lanţuri
- contesta
- provocări
- caractere
- taxe
- chatbots
- mai ieftin
- verifica
- chimic
- clasă
- cod
- combinaţie
- Companii
- calcul
- de calcul
- constrângeri
- conţine
- Containere
- conține
- A costat
- cost-eficiente
- ar putea
- crea
- a creat
- personalizat
- clienţii care
- de date
- baze de date
- seturi de date
- scădea
- scăzut
- defini
- definit
- demonstra
- demonstrat
- În funcție
- implementa
- descris
- Amenajări
- În ciuda
- determinat
- dezvoltat
- Dezvoltare
- dispozitiv
- diagramă
- diferit
- descoperire
- discutat
- Boală
- distribuite
- Dont
- jos
- descărcarea
- medicament
- Droguri
- în timpul
- fiecare
- efect
- în mod eficient
- eficiență
- eficient
- eficient
- oricare
- altfel
- permite
- codare
- Punct final
- enorm
- epocă
- epoci
- egal
- este egală cu
- mai ales
- evaluare
- Chiar
- tot
- exemplu
- exemple
- depășire
- excesiv
- existent
- scump
- experienţă
- experimente
- expertiză
- explora
- suplimentar
- Față
- familie
- mai repede
- realizabil
- Recomandate
- DESCRIERE
- puțini
- Figura
- filtru
- În cele din urmă
- Găsi
- capăt
- First
- următor
- Pentru
- din fericire
- Înainte
- fracțiune
- Cadru
- Prietenii lui
- din
- congelate
- funcţie
- mai mult
- obține
- GitHub
- dat
- oferă
- Caritate
- Go
- bine
- GPU
- unități de procesare grafică
- gradienți
- crescut
- se întâmplă
- Piese metalice
- Avea
- he
- de asistență medicală
- Tehnica Sănătăţii
- ajutor
- ajutor
- ajută
- Înalt
- de înaltă calitate
- lui
- Cum
- Cum Pentru a
- Totuși
- HTML
- http
- HTTPS
- mare
- Față îmbrățișată
- uman
- Rănit
- idee
- if
- ilustrează
- import
- important
- îmbunătățirea
- in
- include
- a crescut
- infecţii
- informații
- intrări
- în interiorul
- instanță
- in schimb
- interacţiona
- în
- probleme de
- IT
- Loc de munca
- A pastra
- păstrare
- Cheie
- regat
- cunoscut
- etichete
- limbă
- mare
- mai mare
- învăţare
- mai puțin
- Permite
- biblioteci
- Bibliotecă
- Viaţă
- Știința vieții
- Life Sciences
- ca
- LIMITĂ
- limitări
- Limitat
- Locuiește
- Localizare
- Locații
- Lung
- perioadă lungă de timp
- de pe
- Lot
- Jos
- loial
- maşină
- masina de învățare
- Masini
- făcut
- Majoritate
- face
- FACE
- flexibil
- gestionate
- multe
- masiv
- max
- Maximaliza
- maxim
- Mai..
- sens
- mijloace
- Memorie
- Îmbina
- metodă
- Metode
- Metrici
- minute
- ML
- model
- modelare
- Modele
- molecular
- mai mult
- mai eficient
- în mişcare
- ARNm
- mult
- multiplu
- nume
- Natură
- necesar
- Nevoie
- necesar
- rețele
- neural
- rețele neuronale
- Nou
- Nici unul
- roman
- număr
- obiect
- obiecte
- of
- on
- ONE
- cele
- afară
- optimizare
- optimizate
- or
- comandă
- comenzilor
- original
- iniţial
- Altele
- Altele
- in caz contrar
- al nostru
- afară
- iesiri
- exterior
- peste
- global
- propriu
- parametrii
- parte
- trece
- trece
- pasionat
- trecut
- Efectua
- efectuată
- bucată
- Plato
- Informații despre date Platon
- PlatoData
- Joaca
- la care se adauga
- posibil
- Post
- postări
- potenţial
- potenţial
- prezice
- Pregăti
- împiedica
- precedent
- Problemă
- Procesat
- Produs
- proiect
- proprietăţi
- Proteină
- Proteine
- furnizează
- public
- pune
- întrebare
- Întrebări
- repede
- gamă
- rank
- ajunge
- în timp real
- rezonabil
- înregistrări
- reduce
- Redus
- reduce
- reducere
- regex
- regiuni
- scoate
- înlocui
- depozit
- reprezenta
- reprezentate
- Cerinţe
- cercetători
- Resurse
- respectiv
- răspunde
- responsabil
- REZULTATE
- reveni
- Recenzii
- dreapta
- Rol
- Alerga
- Runtime
- sagemaker
- de vânzări
- Economisiți
- Ştiinţă
- ȘTIINȚE
- ştiinţific
- zgâria
- scenariu
- script-uri
- secțiuni
- vedea
- selectarea
- SELF
- senior
- sens
- distinct
- Secvenţă
- Servicii
- Seturi
- câteva
- indicat
- asemănător
- simplu
- simula
- teren
- Mărimea
- dimensiuni
- ușor diferite
- încetini
- încetiniri
- mic
- mai mici
- soluţie
- soluţii
- REZOLVAREA
- unele
- Sursă
- specific
- viteză
- împărţi
- standard
- Începe
- de ultimă oră
- şedere
- în mod constant
- Pas
- paşi
- depozitare
- stoca
- stocarea
- Strategic
- Şir
- structura
- structurile
- prezenta
- suficient
- tabel
- Lua
- ia
- Ţintă
- obiective
- Sarcină
- sarcini
- echipă
- tehnică
- tehnici de
- test
- a) Sport and Nutrition Awareness Day in Manasia Around XNUMX people from the rural commune Manasia have participated in a sports and healthy nutrition oriented activity in one of the community’s sports ready yards. This activity was meant to gather, mainly, middle-aged people from a Romanian rural community and teach them about the benefits that sports have on both their mental and physical health and on how sporting activities can be used to bring people from a community closer together. Three trainers were made available for this event, so that the participants would get the best possible experience physically and so that they could have the best access possible to correct information and good sports/nutrition practices. b) Sports Awareness Day in Poiana Țapului A group of young participants have taken part in sporting activities meant to teach them about sporting conduct, fairplay, and safe physical activities. The day culminated with a football match.
- decât
- acea
- lor
- Lor
- se
- apoi
- terapeutică
- Acolo.
- prin urmare
- Acestea
- ei
- lucruri
- acest
- mie
- Prin
- timp
- ori
- la
- tokeniza
- de asemenea
- Unelte
- lanternă
- Total
- Tren
- dresat
- Pregătire
- Transforma
- transformatoare
- proces
- adevărat
- încerca
- de reglaj
- ÎNTORCĂ
- tip
- Tipuri
- tipic
- înţelege
- ANONIM
- inutil
- Actualizează
- actualizat
- actualizarea
- us
- Folosire
- USD
- utilizare
- utilizat
- utilizări
- folosind
- ca de obicei
- valoare
- Valori
- varietate
- foarte
- de
- vrea
- we
- web
- servicii web
- BINE
- au fost
- Ce
- cand
- dacă
- care
- în timp ce
- larg
- Gamă largă
- pe larg
- cu
- fără
- Apartamente
- a face exerciţii fizice
- flux de lucru
- ar
- scris
- X
- ani
- Tu
- Ta
- zephyrnet