W tym poście pokazujemy, jak skutecznie dostroić najnowocześniejszy model języka białek (pLM), aby przewidzieć lokalizację subkomórkową białek za pomocą Amazon Sage Maker.
Białka to molekularne maszyny organizmu, odpowiedzialne za wszystko, od poruszania mięśniami po reakcję na infekcje. Pomimo tej różnorodności wszystkie białka zbudowane są z powtarzających się łańcuchów cząsteczek zwanych aminokwasami. Ludzki genom koduje 20 standardowych aminokwasów, każdy o nieco innej budowie chemicznej. Można je reprezentować za pomocą liter alfabetu, co pozwala nam następnie analizować i eksplorować białka w postaci ciągu tekstowego. Ogromna możliwa liczba sekwencji i struktur białek sprawia, że białka mają tak różnorodne zastosowania.
Białka odgrywają również kluczową rolę w opracowywaniu leków, jako potencjalne cele, ale także jako środki lecznicze. Jak pokazano w poniższej tabeli, wiele najlepiej sprzedających się leków w 2022 r. to białka (zwłaszcza przeciwciała) lub inne cząsteczki, takie jak mRNA, ulegające translacji na białka w organizmie. Z tego powodu wielu badaczy nauk przyrodniczych musi szybciej, taniej i dokładniej odpowiadać na pytania dotyczące białek.
Imię | Producent | Sprzedaż globalna w 2022 r. (miliardy dolarów USD) | wskazania |
comirnaty | Pfizer / BioNTech | $40.8 | COVID-19 |
Spikevax | Nowoczesny | $21.8 | COVID-19 |
Humira | AbbVie | $21.6 | Zapalenie stawów, choroba Leśniowskiego-Crohna i inne |
keytruda | Merck | $21.0 | Różne nowotwory |
Źródło danych: Urquhart, L. Najpopularniejsze firmy i leki według sprzedaży w 2022 roku. Nature Reviews Drug Discovery 22, 260–260 (2023).
Ponieważ możemy reprezentować białka jako ciągi znaków, możemy je analizować przy użyciu technik pierwotnie opracowanych dla języka pisanego. Obejmuje to duże modele językowe (LLM) wstępnie przeszkolone na ogromnych zbiorach danych, które można następnie dostosować do konkretnych zadań, takich jak podsumowywanie tekstu lub chatboty. Podobnie pLM są wstępnie szkolone w dużych bazach danych sekwencji białek przy użyciu nieznakowanego, samonadzorowanego uczenia się. Możemy je przystosować do przewidywania takich rzeczy, jak struktura 3D białka lub jego interakcja z innymi cząsteczkami. Naukowcy wykorzystali nawet pLM do zaprojektowania od podstaw nowych białek. Narzędzia te nie zastępują ludzkiej wiedzy naukowej, ale mogą przyspieszyć rozwój przedkliniczny i projektowanie badań.
Jednym z wyzwań związanych z tymi modelami jest ich rozmiar. Zarówno LLM, jak i pLM wzrosły w ciągu ostatnich kilku lat o rzędy wielkości, jak pokazano na poniższym rysunku. Oznacza to, że wyszkolenie ich w zakresie wystarczającej dokładności może zająć dużo czasu. Oznacza to również, że do przechowywania parametrów modelu konieczne jest użycie sprzętu, zwłaszcza procesorów graficznych, z dużą ilością pamięci.
Długie czasy szkolenia i duże instancje oznaczają wysokie koszty, co może sprawić, że ta praca będzie poza zasięgiem wielu badaczy. Na przykład w 2023 r Zespół badawczy opisał trenowanie pLM o 100 miliardach parametrów na procesorach graficznych 768 A100 przez 164 dni! Na szczęście w wielu przypadkach możemy zaoszczędzić czas i zasoby, dostosowując istniejący pLM do naszego konkretnego zadania. Ta technika nazywa się strojenie, a także pozwala nam pożyczać zaawansowane narzędzia z innych typów modelowania języka.
Omówienie rozwiązania
Konkretnym problemem, który poruszamy w tym poście, jest lokalizacja subkomórkowa: Czy biorąc pod uwagę sekwencję białka, możemy zbudować model, który będzie w stanie przewidzieć, czy żyje ono na zewnątrz (błona komórkowa), czy wewnątrz komórki? Jest to ważna informacja, która może pomóc nam zrozumieć funkcję i to, czy będzie dobrym celem leku.
Zaczynamy od pobrania publicznego zbioru danych za pomocą Studio Amazon SageMaker. Następnie używamy SageMakera do dostrojenia modelu języka białka ESM-2 przy użyciu wydajnej metody szkoleniowej. Na koniec wdrażamy model jako punkt końcowy wnioskowania w czasie rzeczywistym i używamy go do testowania niektórych znanych białek. Poniższy diagram ilustruje ten przepływ pracy.
W poniższych sekcjach omówimy kroki przygotowania danych szkoleniowych, utworzenia skryptu szkoleniowego i uruchomienia zadania szkoleniowego SageMaker. Cały kod opisany w tym poście jest dostępny na GitHub.
Przygotuj dane treningowe
Używamy części Zbiór danych DeepLoc-2, który zawiera kilka tysięcy białek SwissProt o eksperymentalnie ustalonych lokalizacjach. Filtrujemy pod kątem wysokiej jakości sekwencji o długości od 100 do 512 aminokwasów:
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"]]
Następnie tokenizujemy sekwencje i dzielimy je na zbiory szkoleniowe i ewaluacyjne:
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 koniec przesyłamy przetworzone dane szkoleniowe i ewaluacyjne do Usługa Amazon Simple Storage (Amazonka 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)
Utwórz skrypt szkoleniowy
Tryb skryptowy SageMaker umożliwia uruchomienie niestandardowego kodu szkoleniowego w zoptymalizowanych kontenerach struktury uczenia maszynowego (ML) zarządzanych przez AWS. Na potrzeby tego przykładu dostosowujemy an istniejący skrypt do klasyfikacji tekstu z Przytulonej Twarzy. Dzięki temu możemy wypróbować kilka metod poprawy efektywności naszej pracy szkoleniowej.
Metoda 1: Trening z obciążeniem
Podobnie jak wiele biologicznych zbiorów danych, dane DeepLoc są nierównomiernie rozłożone, co oznacza, że nie ma równej liczby białek błonowych i niebłonowych. Moglibyśmy ponownie spróbować naszych danych i odrzucić rekordy z klasy większościowej. Jednakże zmniejszyłoby to całkowite dane szkoleniowe i potencjalnie zaszkodziłoby naszej dokładności. Zamiast tego obliczamy wagi klas podczas treningu i wykorzystujemy je do skorygowania straty.
W naszym skrypcie szkoleniowym podklasujemy klasę Trainer
klasa od transformers
z WeightedTrainer
klasa, która uwzględnia wagi klas przy obliczaniu straty entropii krzyżowej. Pomaga to zapobiegać stronniczości w naszym 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
Metoda 2: Akumulacja gradientowa
Akumulacja gradientowa to technika uczenia, która umożliwia modelom symulowanie uczenia w partiach o większych rozmiarach. Zwykle rozmiar partii (liczba próbek użytych do obliczenia gradientu w jednym kroku szkoleniowym) jest ograniczona pojemnością pamięci procesora graficznego. W przypadku akumulacji gradientów model najpierw oblicza gradienty w mniejszych partiach. Następnie, zamiast od razu aktualizować wagi modelu, gradienty są kumulowane w wielu małych partiach. Gdy skumulowane gradienty są równe docelowemu większemu rozmiarowi partii, przeprowadzany jest etap optymalizacji w celu aktualizacji modelu. Dzięki temu modele mogą trenować z efektywnie większymi partiami bez przekraczania limitu pamięci GPU.
Jednak w przypadku mniejszych partii przejść do przodu i do tyłu potrzebne są dodatkowe obliczenia. Zwiększenie wielkości partii w wyniku akumulacji gradientowej może spowolnić trening, szczególnie jeśli stosuje się zbyt wiele etapów akumulacji. Celem jest maksymalizacja wykorzystania procesora graficznego, ale uniknięcie nadmiernych spowolnień spowodowanych zbyt wieloma dodatkowymi krokami obliczeniowymi gradientu.
Metoda 3: Gradientowy punkt kontrolny
Gradientowe punkty kontrolne to technika zmniejszająca ilość pamięci potrzebnej podczas szkolenia, przy jednoczesnym zachowaniu rozsądnego czasu obliczeń. Duże sieci neuronowe zajmują dużo pamięci, ponieważ muszą przechowywać wszystkie wartości pośrednie z przebiegu w przód, aby obliczyć gradienty podczas przejścia wstecz. Może to powodować problemy z pamięcią. Jednym z rozwiązań jest nie przechowywanie tych wartości pośrednich, ale następnie należy je ponownie obliczyć podczas przejścia wstecz, co zajmuje dużo czasu.
Gradientowe punkty kontrolne zapewniają zrównoważone podejście. Zapisuje tylko część wartości pośrednich, tzw punkty kontrolnei w razie potrzeby przelicza pozostałe. Dlatego zużywa mniej pamięci niż przechowywanie wszystkiego, ale także mniej obliczeń niż ponowne obliczanie wszystkiego. Dzięki strategicznemu wyborowi aktywacji do punktu kontrolnego gradientowy punkt kontrolny umożliwia uczenie dużych sieci neuronowych przy możliwym do zarządzania wykorzystaniu pamięci i czasie obliczeń. Ta ważna technika umożliwia uczenie bardzo dużych modeli, które w przeciwnym razie napotykałyby ograniczenia pamięci.
W naszym skrypcie szkoleniowym włączamy aktywację gradientu i punktowanie kontrolne, dodając do pliku niezbędne parametry TrainingArguments
obiekt:
from transformers import TrainingArguments
training_args = TrainingArguments(
gradient_accumulation_steps=4,
gradient_checkpointing=True
)
Metoda 4: Adaptacja LLM niskiej rangi
Duże modele językowe, takie jak ESM-2, mogą zawierać miliardy parametrów, których uczenie i uruchamianie jest kosztowne. Badacze opracowali metodę szkoleniową zwaną adaptacją niskiego stopnia (LoRA), aby usprawnić dostrajanie tych ogromnych modeli.
Kluczową ideą LoRA jest to, że dostrajając model do konkretnego zadania, nie trzeba aktualizować wszystkich oryginalnych parametrów. Zamiast tego LoRA dodaje do modelu nowe, mniejsze macierze, które przekształcają dane wejściowe i wyjściowe. Tylko te mniejsze macierze są aktualizowane podczas dostrajania, które jest znacznie szybsze i zużywa mniej pamięci. Oryginalne parametry modelu pozostają zamrożone.
Po dostrojeniu za pomocą LoRA możesz połączyć małe dostosowane macierze z powrotem w oryginalny model. Możesz też zachować je oddzielnie, jeśli chcesz szybko dostosować model do innych zadań, nie zapominając o poprzednich. Ogólnie rzecz biorąc, LoRA umożliwia efektywne dostosowanie LLM do nowych zadań za ułamek zwykłych kosztów.
W naszym skrypcie szkoleniowym konfigurujemy LoRA za pomocą PEFT
biblioteka z 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)
Prześlij ofertę szkoleniową SageMaker
Po zdefiniowaniu skryptu szkoleniowego możesz skonfigurować i przesłać zadanie szkoleniowe SageMaker. Najpierw określ hiperparametry:
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,
}
Następnie zdefiniuj, jakie metryki mają być przechwytywane z dzienników szkoleniowych:
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-]*)"},
]
Na koniec zdefiniuj estymator Hugging Face i prześlij go do szkolenia na typie instancji ml.g5.2xlarge. Jest to ekonomiczny typ instancji, który jest powszechnie dostępny w wielu regionach 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),
}
)
W poniższej tabeli porównano różne omówione przez nas metody uczenia i ich wpływ na czas działania, dokładność i wymagania dotyczące pamięci GPU w naszym zadaniu.
systemu | Czas rozliczeniowy (min) | Dokładność oceny | Maksymalne wykorzystanie pamięci GPU (GB) |
Model podstawowy | 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 |
Wszystkie metody pozwoliły uzyskać modele o dużej dokładności oceny. Korzystanie z LoRA i aktywacji gradientowej skróciło czas działania (i koszt) odpowiednio o 18% i 25%. Korzystanie z punktów kontrolnych gradientu zmniejszyło maksymalne wykorzystanie pamięci GPU o 55%. W zależności od ograniczeń (koszt, czas, sprzęt) jedno z tych podejść może mieć większy sens niż inne.
Każda z tych metod działa dobrze sama w sobie, ale co się stanie, gdy zastosujemy je w połączeniu? Poniższa tabela podsumowuje wyniki.
systemu | Czas rozliczeniowy (min) | Dokładność oceny | Maksymalne wykorzystanie pamięci GPU (GB) |
Wszystkie metody | 12 | 0.80 | 3.3 |
W tym przypadku widzimy spadek dokładności o 12%. Jednakże skróciliśmy czas działania o 57% i zużycie pamięci GPU o 85%! Jest to ogromny spadek, który pozwala nam trenować na szerokiej gamie opłacalnych typów instancji.
Sprzątać
Jeśli korzystasz z własnego konta AWS, usuń wszelkie punkty końcowe i dane, które utworzyłeś w czasie rzeczywistym, aby uniknąć dalszych opłat.
predictor.delete_endpoint()
bucket = boto_session.resource("s3").Bucket(S3_BUCKET)
bucket.objects.filter(Prefix=S3_PREFIX).delete()
Wnioski
W tym poście pokazaliśmy, jak skutecznie dostroić modele języka białek, takie jak ESM-2, do zadania o znaczeniu naukowym. Więcej informacji na temat korzystania z bibliotek Transformers i PEFT do uczenia pLMS można znaleźć w postach Głębokie uczenie się z białkami i ESMBind (ESMB): Adaptacja niskiej rangi ESM-2 do przewidywania miejsca wiązania białka na blogu Hugging Face. Więcej przykładów wykorzystania uczenia maszynowego do przewidywania właściwości białek można również znaleźć w Niesamowita analiza białek na AWS Repozytorium GitHub.
O autorze
Briana Loyala jest starszym architektem rozwiązań AI/ML w zespole Global Healthcare and Life Sciences w Amazon Web Services. Ma ponad 17-letnie doświadczenie w biotechnologii i uczeniu maszynowym, a jego pasją jest pomaganie klientom w rozwiązywaniu problemów genomicznych i proteomicznych. W wolnym czasie lubi gotować i jeść z przyjaciółmi i rodziną.
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- PlatoData.Network Pionowe generatywne AI. Wzmocnij się. Dostęp tutaj.
- PlatoAiStream. Inteligencja Web3. Wiedza wzmocniona. Dostęp tutaj.
- PlatonESG. Węgiel Czysta technologia, Energia, Środowisko, Słoneczny, Gospodarowanie odpadami. Dostęp tutaj.
- Platon Zdrowie. Inteligencja w zakresie biotechnologii i badań klinicznych. Dostęp tutaj.
- Źródło: https://aws.amazon.com/blogs/machine-learning/efficiently-fine-tune-the-esm-2-protein-language-model-with-amazon-sagemaker/
- :ma
- :Jest
- :nie
- $W GÓRĘ
- 07
- 1
- 100
- 17
- 20
- 2022
- 2023
- 22
- 28
- 3d
- 425
- 600
- 7
- 750
- 8
- a
- O nas
- Konto
- Zgromadzone
- akumulacja
- precyzja
- dokładnie
- Aktywacja
- aktywacje
- przystosować
- adaptacja
- adaptacja
- dodanie
- adres
- Dodaje
- zaawansowany
- AI / ML
- zmierzać
- Wszystkie kategorie
- pozwala
- wzdłuż
- Alfabet
- również
- Amazonka
- Amazon Sage Maker
- Amazon Web Services
- kwoty
- an
- analiza
- w czasie rzeczywistym sprawiają,
- i
- Inne
- odpowiedź
- każdy
- podejście
- awanse
- architektura
- SĄ
- AS
- At
- dostępny
- uniknąć
- z dala
- AWS
- z powrotem
- zrównoważony
- BE
- bo
- za
- pomiędzy
- stronniczość
- większe
- miliardy
- wiążący
- biotechnologia
- Blog
- ciało
- pożyczać
- obie
- Brian
- budować
- ale
- by
- obliczać
- oblicza
- obliczenie
- nazywa
- CAN
- Pojemność
- zdobyć
- walizka
- Etui
- Spowodować
- komórka
- łańcuch
- więzy
- wyzwanie
- wyzwania
- znaków
- Opłaty
- nasze chatboty
- tańsze
- ZOBACZ
- chemiczny
- klasa
- kod
- połączenie
- Firmy
- obliczenia
- obliczeniowy
- Ograniczenia
- zawierać
- Pojemniki
- zawiera
- Koszty:
- opłacalne
- mógłby
- Stwórz
- stworzony
- zwyczaj
- Klientów
- dane
- Bazy danych
- zbiory danych
- spadek
- zmniejszony
- określić
- zdefiniowane
- wykazać
- wykazać
- W zależności
- rozwijać
- opisane
- Wnętrze
- Mimo
- ustalona
- rozwinięty
- oprogramowania
- urządzenie
- schemat
- różne
- odkrycie
- omówione
- choroba
- dystrybuowane
- nie
- na dół
- ściąganie
- lek
- Narkotyki
- podczas
- każdy
- efekt
- faktycznie
- efektywność
- wydajny
- skutecznie
- bądź
- więcej
- Umożliwia
- kodowanie
- Punkt końcowy
- ogromny
- epoka
- epoki
- równy
- Równa się
- szczególnie
- ewaluację
- Parzyste
- wszystko
- przykład
- przykłady
- nadzwyczajny
- nadmierny
- Przede wszystkim system został opracowany
- drogi
- doświadczenie
- eksperymenty
- ekspertyza
- odkryj
- dodatkowy
- Twarz
- członków Twojej rodziny
- szybciej
- wykonalny
- polecane
- Korzyści
- kilka
- Postać
- filtrować
- W końcu
- Znajdź
- w porządku
- i terminów, a
- następujący
- W razie zamówieenia projektu
- na szczęście
- Naprzód
- frakcja
- Framework
- przyjaciele
- od
- zamrożone
- funkcjonować
- dalej
- otrzymać
- GitHub
- dany
- daje
- Globalne
- Go
- dobry
- GPU
- GPU
- gradienty
- dorosły
- dzieje
- sprzęt komputerowy
- Have
- he
- opieki zdrowotnej
- Techniki Zdrowia
- pomoc
- pomoc
- pomaga
- Wysoki
- wysokiej jakości
- jego
- W jaki sposób
- How To
- Jednak
- HTML
- http
- HTTPS
- olbrzymi
- Przytulanie twarzy
- człowiek
- Zranić
- pomysł
- if
- ilustruje
- importować
- ważny
- poprawy
- in
- obejmuje
- wzrosła
- Infekcje
- Informacja
- Wejścia
- wewnątrz
- przykład
- zamiast
- interakcji
- najnowszych
- problemy
- IT
- Praca
- Trzymać
- konserwacja
- Klawisz
- Królestwo
- znany
- Etykiety
- język
- duży
- większe
- nauka
- mniej
- pozwala
- biblioteki
- Biblioteka
- życie
- Life Science
- Life Sciences
- lubić
- LIMIT
- Ograniczenia
- Ograniczony
- Zyje
- Localization
- lokalizacji
- długo
- długi czas
- od
- Partia
- niski
- wierny
- maszyna
- uczenie maszynowe
- maszyny
- zrobiony
- Większość
- robić
- WYKONUJE
- wykonalny
- zarządzane
- wiele
- masywny
- max
- Maksymalizuj
- maksymalny
- Może..
- znaczenie
- znaczy
- Pamięć
- Łączyć
- metoda
- metody
- Metryka
- min
- ML
- model
- modelowanie
- modele
- Cząsteczkowa
- jeszcze
- bardziej wydajny
- przeniesienie
- mRNA
- dużo
- wielokrotność
- Nazwa
- Natura
- niezbędny
- Potrzebować
- potrzebne
- sieci
- nerwowy
- sieci neuronowe
- Nowości
- żaden
- powieść
- numer
- przedmiot
- obiekty
- of
- on
- ONE
- te
- tylko
- optymalizacja
- zoptymalizowane
- or
- zamówienie
- Zlecenia
- oryginalny
- pierwotnie
- Inne
- Pozostałe
- Inaczej
- ludzkiej,
- na zewnątrz
- Wyjścia
- zewnętrzne
- koniec
- ogólny
- własny
- parametry
- część
- przechodzić
- przebiegi
- namiętny
- Przeszłość
- wykonać
- wykonywane
- kawałek
- plato
- Analiza danych Platona
- PlatoDane
- Grać
- plus
- możliwy
- Post
- Wiadomości
- potencjał
- potencjalnie
- przewidzieć
- Przygotować
- zapobiec
- poprzedni
- Problem
- Obrobiony
- Wytworzony
- projekt
- niska zabudowa
- Białko
- Białka
- zapewnia
- publiczny
- położyć
- pytanie
- pytania
- szybko
- zasięg
- rankingu
- dosięgnąć
- w czasie rzeczywistym
- rozsądny
- dokumentacja
- zmniejszyć
- Zredukowany
- zmniejsza
- redukcja
- regex
- regiony
- usunąć
- obsługi produkcji rolnej, która zastąpiła
- składnica
- reprezentować
- reprezentowane
- wymagania
- Badacze
- Zasoby
- odpowiednio
- odpowiadanie
- odpowiedzialny
- Efekt
- powrót
- Recenzje
- prawo
- Rola
- run
- Czas
- sagemaker
- sole
- Zapisz
- nauka
- NAUKI
- naukowy
- zadraśnięcie
- scenariusz
- skrypty
- działy
- widzieć
- wybierając
- SAMEGO SIEBIE
- senior
- rozsądek
- oddzielny
- Sekwencja
- Usługi
- Zestawy
- kilka
- pokazane
- Podobnie
- Prosty
- symulować
- witryna internetowa
- Rozmiar
- rozmiary
- trochę inny
- powolny
- spowolnienia
- mały
- mniejszy
- rozwiązanie
- Rozwiązania
- ROZWIĄZANIA
- kilka
- Źródło
- specyficzny
- prędkość
- dzielić
- standard
- początek
- state-of-the-art
- pobyt
- stale
- Ewolucja krok po kroku
- Cel
- przechowywanie
- sklep
- przechowywania
- Strategicznie
- sznur
- Struktura
- Struktury
- Zatwierdź
- wystarczający
- stół
- Brać
- trwa
- cel
- cele
- Zadanie
- zadania
- zespół
- technika
- Techniki
- test
- XNUMX
- niż
- że
- Połączenia
- ich
- Im
- sami
- następnie
- lecznictwo
- Tam.
- w związku z tym
- Te
- one
- rzeczy
- to
- tysiąc
- Przez
- czas
- czasy
- do
- tokenizować
- także
- narzędzia
- pochodnia
- Kwota produktów:
- Pociąg
- przeszkolony
- Trening
- Przekształcać
- Transformatory
- próba
- prawdziwy
- próbować
- strojenie
- SKRĘCAĆ
- rodzaj
- typy
- zazwyczaj
- zrozumieć
- ANONIMOWY
- niepotrzebny
- Aktualizacja
- zaktualizowane
- aktualizowanie
- us
- Stosowanie
- USD
- posługiwać się
- używany
- zastosowania
- za pomocą
- zwykły
- wartość
- Wartości
- różnorodność
- początku.
- przez
- chcieć
- we
- sieć
- usługi internetowe
- DOBRZE
- były
- Co
- jeśli chodzi o komunikację i motywację
- czy
- który
- Podczas
- szeroki
- Szeroki zasięg
- szeroko
- w
- bez
- Praca
- odrobić
- workflow
- by
- napisany
- X
- lat
- You
- Twój
- zefirnet