Forwarded from ̶с̶а̶м̶̶о̶изолента мёбиуса
Помните, я рассказывал про эмбеддинги предложений SONAR?
Те самые, для которых есть текстовый энкодер (предложение=>вектор) и декодер (вектор=>предложение) для 200 языков, и ещё несколько десятков энкодеров речи, переводящих устные предложения в то же семантическое пространство, что и письменные.
На основе которых работает моделька BLASER 2.0, неплохо коррелирующая с человеческими оценками (XSTS) качества перевода текста и речи.
На основе которых мои коллеги недавно запилили самый мультиязычный классификатор токсичности, MuTox.
Ну и, конечно, на основе которых мои коллеги собрали датасет SeamlessAlign: собранные по интернетам и заматченные по смыслу пары предложений речь-текст (100К часов) и речь-речь (9К часов) на разных языках. Этот датасет использовался для обучения моделей Seamless, примерно лучших из того, что сегодня существует для перевода речи.
Так вот. SONAR сейчас понимает текст на 200 языках (те же самые, что NLLB), но энкодеры речи пока есть только для 57 языков.
Зачем эти энкодеры вообще нужны? В голову приходит несколько примеров применений:
1) Классификация и перевод устных предложений напрямую, минуя этап автоматической транскрипции. Для классификации можно использовать модели поверх эмбеддингов предложений (типа того же MuTox), а для перевода - имеющийся текстовый декодер.
2) Автоматический матчинг устных предложений с их переводами или транскрипцией - то, как мы собирали SeamlessAlign и несколько подобных датасетов.
Ну и поскольку польза от этого вроде как есть, то сообщество просит дать им рецепт обучения энкодера речи для ещё одного языка. А раз просит - я попробовал сделать. С минимальными данными (используя только CommonVoice) и вычислительными ресурсами (два дня обучения на Colab Pro). На примере грузинского языка, потому что для него ещё нет энкодера речи, но есть, на каких данных оценить его качество и с чем сравнить.
Рецепт - в этом блокноте. Качество мне не очень нравится, так что я его ещё буду дорабатывать. Но фидбек хочется получить уже сейчас, так что если вам есть, что сказать по поводу этого блокнота - не стесняйтесь писать в комменты)
Те самые, для которых есть текстовый энкодер (предложение=>вектор) и декодер (вектор=>предложение) для 200 языков, и ещё несколько десятков энкодеров речи, переводящих устные предложения в то же семантическое пространство, что и письменные.
На основе которых работает моделька BLASER 2.0, неплохо коррелирующая с человеческими оценками (XSTS) качества перевода текста и речи.
На основе которых мои коллеги недавно запилили самый мультиязычный классификатор токсичности, MuTox.
Ну и, конечно, на основе которых мои коллеги собрали датасет SeamlessAlign: собранные по интернетам и заматченные по смыслу пары предложений речь-текст (100К часов) и речь-речь (9К часов) на разных языках. Этот датасет использовался для обучения моделей Seamless, примерно лучших из того, что сегодня существует для перевода речи.
Так вот. SONAR сейчас понимает текст на 200 языках (те же самые, что NLLB), но энкодеры речи пока есть только для 57 языков.
Зачем эти энкодеры вообще нужны? В голову приходит несколько примеров применений:
1) Классификация и перевод устных предложений напрямую, минуя этап автоматической транскрипции. Для классификации можно использовать модели поверх эмбеддингов предложений (типа того же MuTox), а для перевода - имеющийся текстовый декодер.
2) Автоматический матчинг устных предложений с их переводами или транскрипцией - то, как мы собирали SeamlessAlign и несколько подобных датасетов.
Ну и поскольку польза от этого вроде как есть, то сообщество просит дать им рецепт обучения энкодера речи для ещё одного языка. А раз просит - я попробовал сделать. С минимальными данными (используя только CommonVoice) и вычислительными ресурсами (два дня обучения на Colab Pro). На примере грузинского языка, потому что для него ещё нет энкодера речи, но есть, на каких данных оценить его качество и с чем сравнить.
Рецепт - в этом блокноте. Качество мне не очень нравится, так что я его ещё буду дорабатывать. Но фидбек хочется получить уже сейчас, так что если вам есть, что сказать по поводу этого блокнота - не стесняйтесь писать в комменты)
Forwarded from grokaem себя (Milana)
ФЕВРАЛЬ 2024
NLP:
0. Пост про embeddings для поиска, можно брать в заметки для собеса.
1. Новый метод self-playing.
2. У Ильи Гусева появился канал, вот например клевый пост про утечку данных.
3. Вышла gemini на овердохера контекста (1млн), у нее много критики. Но сам вопрос длинных контекстов как никогда актуален. Рассуждения на эту тему.
4. Transformer United - пачка видео research orientated про NLP, клевое по RAG. Собрано давно, нашла сейчас.
5. Вышла DoRA - DoRA: Weight-Decomposed Low-Rank Adaptation, paper -> разделяем magnitude и direction, LORA на direction, источник.
Audio:
0. Вышла LLM ASR approach, источник, статья - почти все frozen, тренеруется только linear projection, звучит классно и похоже в теории на encodec, интересно, почему не юзают его.
1. Вышла Supervoice-GPT для перевода с текста на фонемы + duration.
2. Overview audio codec моделей, постоянный источник.
3. Вышла audio synthesis работа с NVIDIA: paper, источник. В HIFIGAN добавили Snake function для periodic inductive bias. Очень классные семплы.
4. CTC is still alive, paper СTC + prompt (ASR & ST), внутри self-conditioned CTC, быстрее 3,6 speed up. paper
5. Stability.AI выкатили StableAudio: CLAP + UNET + VAE (последний кстати тоже с snake function) paper, samples
others:
0. У моего знакомого, который учится в mbzuai был пост про вопросы к собесу
1. Вышла новая модель russian vibe для генерации грустных русских девятиэтажек - пейзажей
2. Я собрала еще один пазл, важная новость - я считаю
NLP:
0. Пост про embeddings для поиска, можно брать в заметки для собеса.
1. Новый метод self-playing.
2. У Ильи Гусева появился канал, вот например клевый пост про утечку данных.
3. Вышла gemini на овердохера контекста (1млн), у нее много критики. Но сам вопрос длинных контекстов как никогда актуален. Рассуждения на эту тему.
4. Transformer United - пачка видео research orientated про NLP, клевое по RAG. Собрано давно, нашла сейчас.
5. Вышла DoRA - DoRA: Weight-Decomposed Low-Rank Adaptation, paper -> разделяем magnitude и direction, LORA на direction, источник.
Audio:
0. Вышла LLM ASR approach, источник, статья - почти все frozen, тренеруется только linear projection, звучит классно и похоже в теории на encodec, интересно, почему не юзают его.
1. Вышла Supervoice-GPT для перевода с текста на фонемы + duration.
2. Overview audio codec моделей, постоянный источник.
3. Вышла audio synthesis работа с NVIDIA: paper, источник. В HIFIGAN добавили Snake function для periodic inductive bias. Очень классные семплы.
4. CTC is still alive, paper СTC + prompt (ASR & ST), внутри self-conditioned CTC, быстрее 3,6 speed up. paper
5. Stability.AI выкатили StableAudio: CLAP + UNET + VAE (последний кстати тоже с snake function) paper, samples
others:
0. У моего знакомого, который учится в mbzuai был пост про вопросы к собесу
1. Вышла новая модель russian vibe для генерации грустных русских девятиэтажек - пейзажей
2. Я собрала еще один пазл, важная новость - я считаю
Forwarded from Лига Хруща // League of Hrusch
Recap of the interview (Not all of the questions are from this interview only)
Sanity check questions:
Simple coding questions:
Q1
Q2
Q3
Design questions
Competency list
General Competencies
CV/DL/ML Specific Competencies
Random questions from the competencies list to check where I actually applied those knowledge, i.e.
1) CTO introduces the company- good place to ask your questions and show that you are really interested in working with them
(your specific projects, tech stack used, challenges faced, years of experience, expertise in instruments, anything you can tell to make yourself look better)
2) Tell about yourself
3) Experience with organizing annotation workflow and managing responsibilities
Sanity check questions:
1) Can you use accuracy as a loss function?
2) Can you use IoU as a loss function?
3) What is the difference between binary, multiclass, and multilabel classification?
4) What is the hash map and how is it used in Python?
5) What is the time complexity of insert into a hash map?
6) What is the difference between linked list and array?
7) What is the difference between local and global minima?
8) What is the aim of backpropagation algorithm?
9) How to copy data from a remote location?
10) How to make a program (i.e. training loop) run after session is terminated?
Simple coding questions:
Q1
def f(arr: List):
arr.append(1)
return arr
arr1 = []
arr2 = arr1
arr3 = f(arr1)
arr4 = f(arr2)
print(arr4)
What will be the output?
Q2
def duplicate(arr: List):
return ...
Create a function to test if the list contains duplicates
Q3
def pair_to_sum(nums: List, target:int):
return ...
Create a function, that will return indices of 2 elements in an array, that sum up to a target, given solution is unique and always exists
Design questions
1) Suppose a business customer comes to you with a request to build a system that will be able to distinguish between 5 types of lung diseases, but they have only unlabeled data, what will you do?
- How would you label the data?
- Suppose the system is working, but there are some edge cases that are classified incorrectly, how to solve this problem?
- Suppose there are sometime incorrect inputs, i.e. leg x-ray in a lung disease detector, how to handle such cases?
- Suppose a new hospital is about to be connected to the system, how to handle such problem?
Competency list
General Competencies
- Python (PEP, GIL, Typing, Multithreading, Packet management, Debugging)
- Quality code (Liters/Formatting, Logging, Tests, Object-Oriented Programming)
- Algorithms (Time and Space Complexity, Recursion, Trees, HashMaps, Arrays, Graph methods (DFS, BFS))
- DevOps basics (gid, Docker, s3, Cloud Service Providers, ci/cd, bash, ssh)CV/DL/ML Specific Competencies
- Types of learning (Supervised, Unsupervised, Semi-Supervised)
- Math (Matrices, Probability, Statistics, Distributions)
- Basic ML algorithms (Regression, KNN, Boosting, Decision Trees)
- Scikit-Learn
- Parameter tuning
- Python data processing (numpy, pandas, matplotlib)
- Neural networks (Convolution, Augmentations, Overfitting, Transfer learning, Embeddings, PyTorch, TensorFlow, paperswithcode.com)
- Computer Vision Tasks (Classification, Detection, Semantic segmentation, Instance segmentation, Keypoint detection, Metric learning)
- OpenCV
- Working with 3D data (2D, CT, MRI, DICOM, MONAI)
- Data annotation (Preparing data for annotation, Crowdsourcing (Toloka etc.), Tools for annotation (labelstudio, supervisely, Toloka etc.), Active learning)
- MLOps (Training models not in jupyter notebooks, conda (virtual environments), pytorch lightning, dvc, TensorBoard, MLFlow, ClearML, W&B)
- Experience in deploying models to production (Flask/FastAPI/Django, Kafka/RabbitMQ, Docker, Docker swarm, Kubernetes)
- Experience in model optimizationRandom questions from the competencies list to check where I actually applied those knowledge, i.e.
Where did you use deployment, Flask, Docker, etc.Forwarded from Data Funk
Привет, всякий раз, когда приходится иметь дело с рисками (прогноз погоды, медицинская диагностика, финансы, беспилотные авто и тд) возникает задача прогнозирования не просто точечного значения, а целого диапазона, в идеале всего условного распределения F(Y|X). Среди доступных для этого инструментов: Байесовские методы, квантильная регрессия, конформные предсказания и ансамблевые методы. К последним относится модификация случайного леса - Distributional Random Forest. Отличие от классического леса только в конце - для выбранного X оценивается близость со всеми точками из train набора по тому, как часто X попадает с ними в одни и те же листья в деревьях. Полученные меры близости используются в качестве весов для соответствующих значений Y из обучающей выборки, что в итоге дает непараметрическую оценку условного распределения F(Y|X).
Forwarded from Where is data, Lebowski (double_data_auto_bot)
💪 Прокачай себя до уровня PRO или полезные лайфхаки
.
Воды не будет, только те, конструкции, которые сам нашел и часто использую в Python+Pandas:
1️⃣ Pandas метод assign
Когда нужно создать столбцы на лету:
2️⃣ Pandas метод pipe
Как apply, только для всего датафрейма и принимает аргументы функции:
3️⃣ Структуры данных из collections
Если не список и не датафрейм, то точно defaultdict. Обычно использую для сбора результатов в цикле:
Кейсы:
- подготовка данных для визуализации (например, отдать по API)
- сбор статистики при выполнении сложных SQL запросов
- ...
4️⃣ Модуль itertools
-
-
-
5️⃣ Модуль functools - магия функционального программирования
-
Кейсы:
- ресерч методов или алгоритмов для решения одной и той же задачи
- отправка уведомлений только нужным адресам (чтобы каждый раз не прописывать их в аргументах)
6️⃣
.
И последнее (но это не точно): не забывайте заглядывать в доки, чтобы не городить монструозные преобразования, которые решаются специальным параметром. Помните, в казалось бы, простой функции pandas.read_csv - ~50 параметров, скорее всего ваш кейс уже там есть🙃
.
#python #lifehack
.
Воды не будет, только те, конструкции, которые сам нашел и часто использую в Python+Pandas:
1️⃣ Pandas метод assign
Когда нужно создать столбцы на лету:
import pandas as pd
df.assign(column_one = lambda row: row["existing_column"] // 1024,
column_two = 24,
....)
2️⃣ Pandas метод pipe
Как apply, только для всего датафрейма и принимает аргументы функции:
import numpy as np
import pandas as pd
def calculate(df: pd.DataFrame, thr: float = 2.56, columns: list = []):
for col in columns:
df[f"{col}_transformed"] = np.sqrt(df[col]) > 2.56
return df
df.pipe(calculate, thr=5, columns=["value_1", "value_2"])
3️⃣ Структуры данных из collections
Если не список и не датафрейм, то точно defaultdict. Обычно использую для сбора результатов в цикле:
from collections import defaultdict
res = defaultdict(list) # общая структура словарь, где для каждого ключа значением по-умолчанию будет пустой список
for idx, value enumerate([123, 999, 678]):
res["idx"].append(idx)
res["value"].append(value**2)
res["value"] # это список =)
Кейсы:
- подготовка данных для визуализации (например, отдать по API)
- сбор статистики при выполнении сложных SQL запросов
- ...
4️⃣ Модуль itertools
-
batched открыл для себя, когда сам сначала написал такую штуку (немножко изобрел 🚲)-
combinations - итератор комбинаций из элементов списка-
zip_longest - "длинный" брат zip (если не знал, то zip проходится по самому короткому из списков)5️⃣ Модуль functools - магия функционального программирования
-
partial - кажется, это самая часто используемая функцию из модуля (ну может после lru_cache())import typing
import pandas as pd
import numpy as np
def func(df: pd.DataFrame, columns: list, method: t.Callable = np.mean, window_width: int = 2):
assert window_width == 2, "Ширина окна должна быть 2+!"
for col in columns:
df[f"{col}_rolling"] = df[col].rolling(window_width, min_periods=2).apply(lambda window: method(window))
return df
func_mean = partial(func, columns=["value_1", "value_2"], method=np.median)
# теперь можно так, остальные параметры уже частично применились выше
func_mean(df=df)
Кейсы:
- ресерч методов или алгоритмов для решения одной и той же задачи
- отправка уведомлений только нужным адресам (чтобы каждый раз не прописывать их в аргументах)
6️⃣
reduce - применяет функцию из 2 аргументов итерабельно к списку, на выходе 1 значениеl = [0, 1, -5, 7, 8]
# x - первый элемент списка, или результат применения функции к текущему элементу, y - текущий элемент
res = reduce(lambda x, y: x+y, l)
print(res) # 11
.
И последнее (но это не точно): не забывайте заглядывать в доки, чтобы не городить монструозные преобразования, которые решаются специальным параметром. Помните, в казалось бы, простой функции pandas.read_csv - ~50 параметров, скорее всего ваш кейс уже там есть🙃
.
#python #lifehack
Forwarded from Dealer.AI
Как Яндекс научил YaGPT пересказывать видео в браузере.
Коллеги по AI цеху выпустили статью на Хабре о том, как они научили YandexGPT пересказывать видео.
Пост интересен не только техническими деталями, но и продуктовыми нюансами, влияющими на user experience.
Что ребята из Яндекса там сделали? На самом деле, у команды уже была модель статейной суммаризации, поэтому взяли то что уже есть, и улучшили. При этом, что интересно, в решении нет никакой мультимодальности, как в LLaVa, напрямую. Для приклада к видео были использованы инструменты перевода звука в текст: ведь в видео есть субтитры, чем не текст? И да, ребята, подумали также.
Для обучения было подготовлено 20 000 хорошо выверенных суммаризаций со спец. форматом: заголовок, тайм-код, краткий пересказ, новый заголовок ,его тайм-код и краткий пересказ и тп. Нужно понимать, что видео бывают разные по длине, но у ребят лучше всего завелось нарезать пересказы частями до 12к символов. Иначе далее появляются глюки.
Помимо этого, важно было исследовать разные подходы к обучению LLM. Авторы остановились на LoRA и SFT с расфризом параметров LLM.
Вот так разработчки и добрались до идеальной формулы: добавляем в видео субтитры, делим их по 12 000 символов и пускаем в модельку. Благо видео вещь более структурная чем текст и тут можно делить субтитры на части без значительных смысловых потерь, деля куски субтитров на независимые друг от друга чанки.
Тема очень интересная и на первый взгляд кажется лёгкой. Но сколько же винтиков нужно прикрутить, чтобы всё заработало. Поэтому, советую прочитать статью самостоятельно, тк еще есть хинты с логикой вокруг движка и продуктовые фишки.
Коллеги по AI цеху выпустили статью на Хабре о том, как они научили YandexGPT пересказывать видео.
Пост интересен не только техническими деталями, но и продуктовыми нюансами, влияющими на user experience.
Что ребята из Яндекса там сделали? На самом деле, у команды уже была модель статейной суммаризации, поэтому взяли то что уже есть, и улучшили. При этом, что интересно, в решении нет никакой мультимодальности, как в LLaVa, напрямую. Для приклада к видео были использованы инструменты перевода звука в текст: ведь в видео есть субтитры, чем не текст? И да, ребята, подумали также.
Для обучения было подготовлено 20 000 хорошо выверенных суммаризаций со спец. форматом: заголовок, тайм-код, краткий пересказ, новый заголовок ,его тайм-код и краткий пересказ и тп. Нужно понимать, что видео бывают разные по длине, но у ребят лучше всего завелось нарезать пересказы частями до 12к символов. Иначе далее появляются глюки.
Помимо этого, важно было исследовать разные подходы к обучению LLM. Авторы остановились на LoRA и SFT с расфризом параметров LLM.
Вот так разработчки и добрались до идеальной формулы: добавляем в видео субтитры, делим их по 12 000 символов и пускаем в модельку. Благо видео вещь более структурная чем текст и тут можно делить субтитры на части без значительных смысловых потерь, деля куски субтитров на независимые друг от друга чанки.
Тема очень интересная и на первый взгляд кажется лёгкой. Но сколько же винтиков нужно прикрутить, чтобы всё заработало. Поэтому, советую прочитать статью самостоятельно, тк еще есть хинты с логикой вокруг движка и продуктовые фишки.
Forwarded from New Yorko Times (Yury Kashnitsky)
Каков из тебя Старший Прикладной Ученый в Нвидео
#interview
В журнале “Лиза” сразу после моих любимых рецептов идет секция с опросами. Вот там попался такой, получится ли из тебя Старший Прикладной Ученый. За каждый вопрос можно по баллу. Результат – в конце.
Intro
1. Do you have experience dealing with super-large language models? Do you like do model parallelism at all?
2. Did you work with 70b models or only with 7b and 13b?
3. Do you have production experience with model alignment?
4. Okay, so you're saying you haven't started with DPO and RLHF stuff yet, right? (1 балл – за отриц. ответ)
NLP
5. Can you explain to me how self-attention works?
6. Now the same in mathematical terms
7. Can transformer inference be parallelized?
8. What’s the complexity of the self-attention operation?
9. After the self-attention, what happens in the transformer?
10. How many feed-forward layers are there in the transformer block?
11. What’s the dimension of the feed-forward layer?
12. So internally, it’s super wide. Do you know any reason why people design like that?
13. Do you know this paper where people can edit the transformer memory? Have you heard this?
14. Basically the knowledge is stored in the weights of the transformers, right? So like, for example, the Eiffel Tower is in Paris, right? So this knowledge can be edited. So they find out where the memory located. You know this paper?
15. Have you read about like Hopfield network? (No) Yeah, this is called associative memory. So it's a Hopfield network. It's kind of like an ML, feed-forward network, MLP. Basically, that's where the memory happens. You can store this key value.
16. Have you read the RETRO paper?
17. So have you done anything with RETRO before?
18. Do you know how this RETRO external information is feeding into the language model?
19. Can you explain to me what's the difference between T5 and GPT?
20. How does the encoded information fit into the decoder in T5?
21. So, can you revisit the question about RETRO feeding the retrieved documents into the decoder?
Coding
22. Let me first start with some easy questions. Can you explain to me what's the difference between variables on stack versus variables on heap?
23. It’s about memory allocation. So what's the main difference, how it's stored in memory?
24. So, have you done like programming? Anything apart from Python?
25. In Java memory management, do you know the few generations of the variables in the memory?
26. How does garbage collection work in Java?
27. How does a variable on a stack work?
28. How is it related to the scope of variables, e.g. global and local ones? Where are those allocated in memory?
29. Why does recursion use a stack?
Algorithms
30. (3 балла) Describe a solution to the “8 queens” problem. Describe the pseudocode (no need to write code)
31. (3 балла) What’s the complexity of the algorithm?
32. (3 балла) What’s the classic CS 101 algorithm for this problem?
---
Итого макс 38 баллов.
- Если у тебя 30+ – добро пожаловать в следующий раунд (в котором неизвестно что). Ставь 🤓 к посту, глянем, сколько нас таких
- Если у тебя меньше 30 баллов – тызлобный тупой урод нормис и на Старшего Прикладного Ученого в Нвидео пока не тянешь
пс. К слову, я мог закончить собес сразу после 24-го вопроса.
#interview
В журнале “Лиза” сразу после моих любимых рецептов идет секция с опросами. Вот там попался такой, получится ли из тебя Старший Прикладной Ученый. За каждый вопрос можно по баллу. Результат – в конце.
Intro
1. Do you have experience dealing with super-large language models? Do you like do model parallelism at all?
2. Did you work with 70b models or only with 7b and 13b?
3. Do you have production experience with model alignment?
4. Okay, so you're saying you haven't started with DPO and RLHF stuff yet, right? (1 балл – за отриц. ответ)
NLP
5. Can you explain to me how self-attention works?
6. Now the same in mathematical terms
7. Can transformer inference be parallelized?
8. What’s the complexity of the self-attention operation?
9. After the self-attention, what happens in the transformer?
10. How many feed-forward layers are there in the transformer block?
11. What’s the dimension of the feed-forward layer?
12. So internally, it’s super wide. Do you know any reason why people design like that?
13. Do you know this paper where people can edit the transformer memory? Have you heard this?
14. Basically the knowledge is stored in the weights of the transformers, right? So like, for example, the Eiffel Tower is in Paris, right? So this knowledge can be edited. So they find out where the memory located. You know this paper?
15. Have you read about like Hopfield network? (No) Yeah, this is called associative memory. So it's a Hopfield network. It's kind of like an ML, feed-forward network, MLP. Basically, that's where the memory happens. You can store this key value.
16. Have you read the RETRO paper?
17. So have you done anything with RETRO before?
18. Do you know how this RETRO external information is feeding into the language model?
19. Can you explain to me what's the difference between T5 and GPT?
20. How does the encoded information fit into the decoder in T5?
21. So, can you revisit the question about RETRO feeding the retrieved documents into the decoder?
Coding
22. Let me first start with some easy questions. Can you explain to me what's the difference between variables on stack versus variables on heap?
23. It’s about memory allocation. So what's the main difference, how it's stored in memory?
24. So, have you done like programming? Anything apart from Python?
25. In Java memory management, do you know the few generations of the variables in the memory?
26. How does garbage collection work in Java?
27. How does a variable on a stack work?
28. How is it related to the scope of variables, e.g. global and local ones? Where are those allocated in memory?
29. Why does recursion use a stack?
Algorithms
30. (3 балла) Describe a solution to the “8 queens” problem. Describe the pseudocode (no need to write code)
31. (3 балла) What’s the complexity of the algorithm?
32. (3 балла) What’s the classic CS 101 algorithm for this problem?
---
Итого макс 38 баллов.
- Если у тебя 30+ – добро пожаловать в следующий раунд (в котором неизвестно что). Ставь 🤓 к посту, глянем, сколько нас таких
- Если у тебя меньше 30 баллов – ты
пс. К слову, я мог закончить собес сразу после 24-го вопроса.
Forwarded from Artificial stupidity
#ml #llm
Коль я уж занимаюсь последнее время LLM, давайте о них и поговорим. Итак, начнем с простых вещей. Много кто пытался вывести "формулу идеального промпта" (ей богу, звучит максимально алхимически, почти "формула философского камня"). В итоге есть множество вариантов, как именно лучше писать промпт. Давайте рассмотрим один из таких вариантов:
1. Задача.
Четкое и детальное описание задачи, которую требуется решить LLM. Самая важная часть, в которой мы описываем, а что же мы хотели от модели. Некорректная постановка задачи приведет к некорректному ответу.
2. Контекст.
Дополнительный контекст, который может быть важен для задачи. Можно определить, с какой позиции нужно рассматривать вопрос, вносить дополнительные справочные данные или иную важную для получения результата информацию.
Частью контекста может быть т.н. “Персона”, то есть детальное описание, с какой точки зрения смотреть на задачу.
3. Примеры/Пояснения.
Мы можем привести дополнительные разъяснения о том, как именно мы хотели бы решить задачу. Например, указать, нужно ли нам детальное решение или краткое, должен ли быть тон профессиональным или дружелюбным и т.д.
Отдельно мы можем привести пример (или несколько примеров) того, как должна быть решена задача. Конечно, если такой пример в принципе можно привести.
4. Формат.
В этой части мы можем указать, в какой формате нам нужен ответ. Это должна быть таблица, план решения задачи, работоспособный код на определенном языке? Все это позволяет точнее зафиксировать, как именно модель должна нам ответить.
Некоторые из пунктов дробят на меньшие сущности (например, выделяют "персону/роль" в отдельную сущность). В других материалах дополнительно приводят "важность" каждой составляющей (Задача важнее всего, потом идет контекст, а потом уже примеры/пояснения, описание роли, формат ответа и т.п.). Но в целом все крутится примерно около того же самого.
Получаем, что Промпт = Задача + Контекст + Примеры/Пояснения + Формат итога
Коль я уж занимаюсь последнее время LLM, давайте о них и поговорим. Итак, начнем с простых вещей. Много кто пытался вывести "формулу идеального промпта" (ей богу, звучит максимально алхимически, почти "формула философского камня"). В итоге есть множество вариантов, как именно лучше писать промпт. Давайте рассмотрим один из таких вариантов:
1. Задача.
Четкое и детальное описание задачи, которую требуется решить LLM. Самая важная часть, в которой мы описываем, а что же мы хотели от модели. Некорректная постановка задачи приведет к некорректному ответу.
2. Контекст.
Дополнительный контекст, который может быть важен для задачи. Можно определить, с какой позиции нужно рассматривать вопрос, вносить дополнительные справочные данные или иную важную для получения результата информацию.
Частью контекста может быть т.н. “Персона”, то есть детальное описание, с какой точки зрения смотреть на задачу.
3. Примеры/Пояснения.
Мы можем привести дополнительные разъяснения о том, как именно мы хотели бы решить задачу. Например, указать, нужно ли нам детальное решение или краткое, должен ли быть тон профессиональным или дружелюбным и т.д.
Отдельно мы можем привести пример (или несколько примеров) того, как должна быть решена задача. Конечно, если такой пример в принципе можно привести.
4. Формат.
В этой части мы можем указать, в какой формате нам нужен ответ. Это должна быть таблица, план решения задачи, работоспособный код на определенном языке? Все это позволяет точнее зафиксировать, как именно модель должна нам ответить.
Некоторые из пунктов дробят на меньшие сущности (например, выделяют "персону/роль" в отдельную сущность). В других материалах дополнительно приводят "важность" каждой составляющей (Задача важнее всего, потом идет контекст, а потом уже примеры/пояснения, описание роли, формат ответа и т.п.). Но в целом все крутится примерно около того же самого.
Получаем, что Промпт = Задача + Контекст + Примеры/Пояснения + Формат итога