Я сейчас работаю над этим проектом, пытаюсь составить список вопросов и ответов для собеседований по Генеративному ИИ.
Я использую эту ссылку в качестве основы, спасибо им за ее составление, однако я допускаю много вольности с редактированием вопросов, а также ответов, они полностью мои собственные.
Примечание. Я стараюсь свести к минимуму ответы, которые пишу сам, поскольку я никоим образом не являюсь авторитетным источником по этой теме. Я буду предоставлять ссылки в меру своих возможностей. Я воздержался от добавления каких-либо визуальных средств для удобства чтения и для сведения к минимуму сложности обслуживания. Ресурсы и ссылки, которые я цитирую, содержат огромное количество информации, в основном с визуальными эффектами.
Я планирую распространить это на генеративный ИИ в целом, а не только на язык, охватывая все, от моделей диффузии до моделей языка видения. Как только я разработаю базовую структуру и буду доволен предварительными результатами, я буду работать над созданием эффективной методологии внесения вклада в этот репозиторий, а затем открою его для внесения вкладов, но сейчас я хочу сохранить его. простой и целенаправленный.
Важный:
Я думаю, что, возможно, необходимо пояснить, что ответы, которые я даю, независимо от того, являются ли они моей собственной рецензией или я цитирую источник, никоим образом не являются окончательными, я пытаюсь помочь вам начать работу. на правильном пути и дать вам общее представление о том, чего ожидать, вам обязательно следует прочитать все ресурсы, которые я предоставляю, а затем и некоторые. Если вы хотите, чтобы это была ваша последняя остановка, то это место не для вас. Вот где это начинается.
Кроме того, если вы только начинаете, мой единственный совет:
Устраивайтесь поудобнее, читая статьи, потому что они никогда не заканчиваются.
Статья о том, как читать статью: Как читать статью
1. LLM и основы подсказок
2. Поисковая дополненная генерация (RAG)
3. Стратегии разделения на части
4. Встраивание моделей для поиска
5. Векторный поиск, базы данных и индексы
6. Алгоритмы расширенного поиска
7. Внутренняя работа языковой модели
Давайте рассмотрим набор данных, где каждая точка данных представляет кошку. Давайте перенесем это на каждый тип модели и посмотрим, чем они отличаются:
Давайте построим определение модели большого языка (LLM) с нуля:
Дополнительная литература: Обычное сканирование
Большие языковые модели часто обучаются в несколько этапов, эти этапы часто называют предварительным обучением, точной настройкой и выравниванием.
Цель этого этапа — предоставить модели все языковые возможности без присмотра. Зачастую это самая дорогостоящая часть обучения, требующая больших вычислительных ресурсов. Предварительное обучение часто выполняется на чем-то вроде набора данных Common Crawl. Для предварительного обучения часто используются обработанные версии набора данных, такие как FineWeb и RedPajama. Чтобы облегчить этот широкий тип обучения, мы можем использовать несколько обучающих задач, таких как моделирование языка в масках (MLM), прогнозирование следующего предложения (NSP) и другие.
Моделирование языка масок основано на тесте Клоза, в котором мы маскируем слово в предложении и просим модель предсказать его. Аналогично заполнению пустого теста. Это отличается от запроса модели предсказать следующее слово в предложении, поскольку требует, чтобы модель понимала контекст предложения, а не только последовательность слов.
Прогнозирование следующего предложения — это задача, в которой модели даются два предложения, и она должна предсказать, следует ли второе предложение за первым. Как бы просто это ни звучало, модель должна понимать контекст первого предложения и связь между двумя предложениями.
Отличным ресурсом для получения дополнительной информации об этих задачах является документ BERT.
Этот этап намного проще, чем предварительное обучение, поскольку модель уже многое узнала о языке, и теперь нам просто нужно научить ее конкретной задаче. Все, что нам нужно для этого этапа, — это входные данные (подсказки) и метки (ответы).
Этот этап часто является самым важным и сложным этапом, он требует использования отдельных моделей вознаграждения, использования различных парадигм обучения, таких как обучение с подкреплением, и многого другого.
Целью этого этапа в основном является согласование прогнозов модели с предпочтениями человека. Этот этап часто переплетается с этапом тонкой настройки. Обязательно прочтите на этом этапе документ InstructGPT. В этом документе представлена концепция обучения с подкреплением на основе обратной связи с человеком (RLHF), которая использует оптимизацию проксимальной политики.
Другие методы согласования прогнозов модели с человеческими предпочтениями включают:
Токены — это наименьшая единица текста, которую может понять модель. Это могут быть слова, подслова или символы.
Токенизаторы отвечают за преобразование текста в токены. Они могут быть простыми, например разделение текста пробелами, или такими сложными, как использование токенизации подслов. Выбор токенизатора может оказать существенное влияние на производительность модели, поскольку он может повлиять на способность модели понимать контекст текста.
Некоторые распространенные токенизаторы включают в себя:
Рекомендуем прочитать (и посмотреть):
Это очень сложный вопрос, но вот несколько ресурсов для дальнейшего изучения этой темы:
Параметры включают в себя:
Каждый из этих параметров можно настроить для улучшения производительности модели и качества создаваемого текста.
Рекомендуемое чтение:
Стратегии декодирования используются для выбора следующего токена в последовательности. Они могут варьироваться от простого жадного декодирования до более сложных стратегий выборки.
Некоторые распространенные стратегии декодирования включают в себя:
Новые стратегии декодирования включают спекулятивное декодирование (вспомогательное декодирование), которое является дикой концепцией. Оно предполагает использование токенов-кандидатов из меньшей (а значит, более быстрой) модели для очень быстрой генерации ответа от более крупной модели.
Рекомендуемое чтение:
В процессе декодирования LLM авторегрессионно генерируют текст по одному токену за раз. Существует несколько критериев остановки, которые можно использовать для определения момента прекращения генерации текста. Некоторые общие критерии остановки включают в себя:
A prompt contains any of the following elements:
Instruction - a specific task or instruction you want the model to perform
Context - external information or additional context that can steer the model to better responses
Input Data - the input or question that we are interested to find a response for
Output Indicator - the type or format of the output.
Ссылка: Краткое инженерное руководство.
Рекомендуемое чтение:
Ссылка: Краткое инженерное руководство.
Рекомендуемое чтение:
Контекстное обучение — это очень интуитивная и простая для понимания парадигма обучения обработке естественного языка. Он включает в себя такие концепции, как обучение в несколько этапов. Это может быть так же просто, как предоставить несколько примеров задачи, которую вы хотите, чтобы модель выполняла, и модель будет учиться на этих примерах и генерировать соответствующие ответы.
Рекомендуемое чтение:
Было показано, что контекстное обучение может возникнуть только тогда, когда модели масштабируются до определенного размера и когда модели обучаются решению разнообразного набора задач. Контекстное обучение может потерпеть неудачу, если модель не способна выполнять сложные логические задачи.
Рекомендуемое чтение:
Это очень общий вопрос, но следующий вопрос поможет вам сформировать общее представление о том, как создавать подсказки для конкретной задачи:
В качестве альтернативы, новые направления исследований исследуют использование алгоритмического способа оптимизации подсказок; это было подробно исследовано в пакете DSPy, который предоставляет средства для этого; их работа также опубликована в этой статье.
На этот вопрос нет ответа, я поставил его как предлог, чтобы связать эту ссылку:
Существует несколько методов, позволяющих LLM генерировать структурированные выходные данные, которые можно анализировать каждый раз, общие методы зависят от концепции вызова функций в LLM.
Рекомендуем к прочтению и просмотру:
The term describes when LLMs produce text that is incorrect, makes no sense, or is unrelated to reality
Ссылка: LLM Галлюцинации - типы, причины и решение от Nexla.
Рекомендуемое чтение:
Известно, что концепция подсказок цепочки мыслей расширяет возможности рассуждения в LLM. Этот метод предполагает разбиение сложной задачи на ряд более простых задач и предоставление модели промежуточных результатов каждой задачи, чтобы направить ее к конечному результату.
Рекомендуемое чтение:
Поисковая дополненная генерация (RAG) — это распространенный шаблон проектирования, позволяющий обосновать ответы LLM на фактах. Этот метод предполагает извлечение соответствующей информации из базы знаний и ее использование для создания текста с помощью LLM.
Рекомендуемое чтение:
Поисковая дополненная генерация (RAG) состоит из двух основных компонентов:
Интуиция, лежащая в основе RAG, заключается в том, что, объединив сильные стороны моделей, основанных на поиске и генерации, мы можем создать систему, способную генерировать текст, основанный на фактах, тем самым ограничивая галлюцинации.
RAG часто используется для ответа на сложные вопросы на основе базы знаний, поскольку он позволяет модели использовать внешнюю информацию для предоставления более точных и информативных ответов. Не всегда возможно точно настроить модель на основе собственных данных, и RAG позволяет использовать внешние знания без необходимости точной настройки.
Полное решение, использующее RAG для ответа на сложный вопрос на основе базы знаний, будет включать следующие шаги:
Это очень сложный вопрос, но вот несколько ресурсов для дальнейшего изучения этой темы:
Разбиение текста на части — это процесс разбиения большого фрагмента текста на более мелкие, более управляемые фрагменты. В контексте систем RAG разделение на фрагменты важно, поскольку оно позволяет компоненту извлечения эффективно извлекать соответствующую информацию из базы знаний. Разбивая запрос на более мелкие фрагменты, программа извлечения может сосредоточиться на извлечении информации, относящейся к каждому фрагменту, что может повысить точность и эффективность процесса поиска.
При обучении моделей внедрения, которые часто используются в качестве ретриверов, используются положительные и отрицательные пары текста, чтобы указать, какие фрагменты текста соответствуют друг другу, примеры включают заголовки, заголовки и подзаголовки на странице Википедии, а также соответствующие им абзацы. , публикации Reddit и их комментарии с наибольшим количеством голосов и т. д.
Пользовательский запрос часто встраивается, и запрашивается индекс. Если бы в индексе содержались целые документы, которые были бы запрошены на предмет попаданий в топ-k, средство извлечения не смогло бы вернуть наиболее релевантную информацию, так как документы, которые будут запрашиваться было бы слишком большим для понимания.
Подводя итог, мы разбиваем текст на части, потому что:
Предположим, у нас есть книга, содержащая 24 главы, всего 240 страниц. Это означало бы, что каждая глава содержит 10 страниц, а каждая страница — 3 абзаца. Предположим, что каждый абзац содержит 5 предложений, а каждое предложение содержит 10 слов. Итого имеем: 10*5*3*10 = 1500 слов на главу. Еще у нас во всей книге 1500*24=36000 слов. Для простоты наш токенизатор представляет собой токенизатор пробелов, и каждое слово является токеном.
Мы знаем, что самое большее у нас есть модель внедрения, способная встроить 8192 токена:
Все это показывает, что не существует фиксированного способа разбиения текста на части, и лучший способ разбить текст на части — поэкспериментировать и посмотреть, что лучше всего подходит для вашего случая использования.
Авторитетным источником по этой теме является превосходный блокнот и сопроводительное видео Грега Камрадта, в котором они объясняют различные уровни разделения текста.
В блокноте также рассматриваются способы оценки и визуализации различных уровней разделения текста и способы их использования в поисковой системе.
Рекомендуемый просмотр:
Векторные встраивания — это отображение текстовой семантики в N-мерное пространство, где векторы представляют текст, в векторном пространстве похожий текст представлен похожими векторами.
Рекомендуемое чтение:
Модели внедрения — это языковые модели, обученные с целью векторизации текста. Они часто являются производными BERT и обучаются на большом корпусе текста для изучения семантики текста, однако последние тенденции также показывают, что можно использовать гораздо более крупные языковые модели. для этого типа Мистраль или Лама.
Рекомендуем к прочтению и просмотру:
Встраиваемые модели часто используются в качестве средств извлечения. Для использования их возможностей поиска используется семантическое текстовое сходство, когда сходство векторов, созданных моделями, измеряется с использованием таких показателей, как скалярное произведение, косинусное сходство и т. д.
Рекомендуемое чтение:
Модели встраивания обучаются с использованием контрастных потерь, начиная от простых контрастных потерь и заканчивая более сложными функциями потерь, такими как InfoNCE и множественная отрицательная потеря ранжирования. Во время обучения также используется процесс, известный как жесткий негативный майнинг.
Рекомендуемое чтение:
Контрастное обучение — это метод, используемый для обучения моделей внедрения. Он включает в себя обучение различать положительные и отрицательные пары текста. Модель обучена максимизировать сходство между положительными парами и минимизировать сходство между отрицательными парами.
Рекомендуемое чтение:
Кросс-кодировщики и бикодеры — это два типа моделей, используемых для задач поиска текста. Основное различие между ними заключается в том, как они кодируют запрос и документ.
Реранкеры обычно являются кросс-кодировщиками: они кодируют запрос и документ вместе и вычисляют сходство между ними. Это позволяет им фиксировать взаимодействие между запросом и документом и получать лучшие результаты, чем бикодеры, ценой гораздо более высокой вычислительной сложности.
Модели внедрения текста обычно представляют собой бикодеры, они кодируют запрос и документ отдельно и вычисляют сходство между двумя внедрениями. Это позволяет им быть более эффективными в вычислительном отношении, чем кросс-кодировщики, но они не способны уловить явное взаимодействие между запросом и документом.
Плотные одновекторные представления часто являются нормой в моделях внедрения текста. Обычно они создаются путем объединения контекстуализированных внедрений после прямого прохода из модели. Методы объединения включают в себя среднее объединение, максимальное объединение и объединение токенов CLS. Интуиция, лежащая в основе одновекторных плотных представлений, заключается в том, что их просто реализовать и можно использовать для широкого круга задач, а также простоту индексации и поиска. Плотные представления также способны уловить семантику текста и часто используются при ранжировании на втором этапе.
Было показано, что многовекторные плотные представления дают превосходные результаты по сравнению с одновекторными плотными представлениями. Они создаются путем пропуска этапа объединения и использования контекстуализированных вложений в форме матрицы, затем встраивания запроса и документа используются для вычисления сходства между во-вторых, такие модели, как ColBERT, показали превосходные результаты по сравнению с плотными одновекторными представлениями. Такой оператор, как MaxSim, используется для расчета сходства между внедренными запросом и документом. Интуиция многовекторных плотных представлений заключается в том, что они способны захватывать больше информации о тексте и давать лучшие результаты, чем одновекторные плотные представления. Такие модели, как ColBERT, также предлагают возможность предварительного расчета встраивания документов, что обеспечивает очень эффективный поиск. Плотные представления также способны уловить семантику текста и часто используются при ранжировании на втором этапе.
Рекомендуемое чтение:
Представления разреженного текста являются старейшей формой моделей векторного пространства в поиске информации. Они обычно основаны на производных и алгоритмах TF-IDF, таких как BM25, и остаются основой для систем поиска текста. Их разреженность связана с тем, что размерность вложений часто соответствует размеру словаря. Интуиция, лежащая в основе разреженных представлений, заключается в том, что они объяснимы, эффективны в вычислительном отношении, просты в реализации и чрезвычайно эффективны для индексации и поиска. Разреженное представление также фокусируется на лексическом сходстве и часто используется при ранжировании на первом этапе.
Рекомендуемое чтение:
Встраивание разреженного текста позволяет использовать инвертированные индексы во время поиска.
Рекомендуемое чтение:
Метрики для сравнительного анализа производительности модели внедрения включают в себя:
Рекомендуем к прочтению и просмотру:
Выбор модели внедрения может стать решающим фактором в производительности вашей поисковой системы, и при ее выборе следует уделить особое внимание. Это обширный процесс, включающий экспериментирование, и следующие ресурсы помогут вам принять обоснованное решение:
Рекомендуемый просмотр:
База данных векторов — это база данных, оптимизированная для хранения и запроса векторных данных. Он обеспечивает эффективное хранение и извлечение векторных векторных представлений и часто используется в приложениях, требующих поиска семантического сходства. Векторные базы данных — это новая парадигма, которая возникла как часть технологического стека, необходимого для удовлетворения потребностей приложений GenAI.
Рекомендуемый просмотр:
Традиционные базы данных оптимизированы для хранения и запроса структурированных данных, таких как текст, числа и даты. Они не предназначены для эффективной обработки векторных данных. С другой стороны, векторные базы данных специально предназначены для хранения и запроса векторных данных. Они используют специализированные методы и алгоритмы индексации, обеспечивающие быстрый и точный поиск по сходству, например квантование и кластеризацию векторов.
База данных векторов обычно содержит индексы векторов, эти индексы содержат матрицы вложений векторов, часто также используется структура данных графа, упорядоченная таким образом, чтобы к ним можно было эффективно запрашивать. При выполнении запроса в качестве входных данных предоставляется либо текст, либо векторное внедрение, в случае текста оно внедряется, и база данных векторов запрашивает соответствующий индекс для получения наиболее похожих векторов на основе показателей расстояния. Обычно векторы сравниваются с использованием таких показателей, как косинусное сходство, скалярное произведение или евклидово расстояние. Векторы также относятся к словарю метаданных, который может содержать такую информацию, как идентификатор документа, заголовок документа, соответствующий текст и многое другое.
Стратегии поиска в векторных базах данных включают:
Рекомендуемое чтение:
После индексации векторов их часто кластеризуют, чтобы уменьшить пространство поиска. Это делается для уменьшения количества векторов, которые необходимо сравнивать в процессе поиска. Кластеризация осуществляется путем группировки похожих векторов вместе с последующей индексацией кластеров. При выполнении запроса поиск сначала выполняется на уровне кластера, а затем на уровне вектора внутри кластера. Для кластеризации часто используются такие алгоритмы, как K-средние.
Рекомендуемое чтение:
Это, очевидно, очень загруженный вопрос, но вот некоторые ресурсы для дальнейшего изучения этой темы:
Vector quantization, also called "block quantization" or "pattern matching quantization" is often used in lossy data compression. It works by encoding values from a multidimensional vector space into a finite set of values from a discrete subspace of lower dimension.
Ссылка: векторный квантизация
One general approach to LSH is to “hash” items several times, in such a way that similar items are more likely to be hashed to the same bucket than dissimilar items are.
Ссылка: добыча массивных наборов данных, 3 -е издание, глава 3, раздел 3.4.1
Рекомендуемое чтение:
In short, PQ is the process of:
- Taking a big, high-dimensional vector,
- Splitting it into equally sized chunks — our subvectors,
- Assigning each of these subvectors to its nearest centroid (also called reproduction/reconstruction values),
- Replacing these centroid values with unique IDs — each ID represents a centroid
Ссылка: квантование продукта
Рекомендуемое чтение:
The Inverted File Index (IVF) index consists of search scope reduction through clustering.
Ссылка: индекс инвертированного файла
Рекомендуемое чтение:
Иерархические судоходные маленькие миры (HNSW) часто считаются самым современным в поисках вектора, это алгоритм на основе графика, который создает график векторов, и использует его для выполнения приблизительного поиска ближнего соседа.
Рекомендуемое чтение:
Метрики расстояния и сходства, используемые в поиске вектора, включают:
Рекомендуется просмотр:
Это очень активная тема исследования, и нет авторитетного источника, но вот некоторые ресурсы для дальнейшего изучения этой темы:
Стоит также отметить, что поисковые, поисковые и переоборудованные системы построены на установленных моделях и архитектурах в области поиска информации, систем рекомендаций и поисковых систем.
Некоторые системные архитектуры, которые вы можете изучить, включают:
Достижение хорошего поиска в крупномасштабных системах включает в себя комбинацию эффективных методов индексации, поиска и ранжирования. Некоторые стратегии для достижения хорошего поиска в крупномасштабных системах включают в себя:
Вы можете заметить, что весь процесс проводится на этапах растущей сложности, это известно как поэтапный рейтинг или многоэтажный поиск.
Рекомендуемое чтение:
Но наиболее важным аспектом достижения хорошего поиска в крупномасштабных системах является экспериментирование и выявление ваших стратегий поиска и ранжирования, а также для постоянного мониторинга и оценки эффективности вашей системы.
Рекомендуемое чтение:
Рекомендуемые разговоры об улучшении систем поиска, поиска и тряпки:
Достижение быстрого поиска включает в себя оптимизацию процесса индексации и поиска, который требует нетривиальных инженерных усилий, ниже приведены некоторые примеры текущего ландшафта в области поиска и оптимизации поиска:
Текущее состояние искусства в поиске векторов показывает, что мультивекторные встроения (позднее взаимодействие) работают лучше, чем отдельные векторы, однако, оптимизируя их поиск, создает значительную инженерную проблему, в следующем обсуждается встроенные многовезиционные встраиваемые и их поиск:
BM25 is a bag-of-words retrieval function that ranks a set of documents based on the query terms appearing in each document, regardless of their proximity within the document.
Ссылка: BM25
Модели повторных переборов - это модели классификации последовательностей, обученные для получения пары запросов и документов, а также вывод необработанных показателей сравнения.
Рекомендуется чтение, просмотр и просмотр:
Оценка тряпичных систем требует экспериментов с и оценкой отдельных компонентов системы, таких как ретривер, генератор и reranker.
Рекомендуемое чтение:
Примечание. С этого момента я буду воздерживаться от ответа как можно большего, и просто ссылки на бумаги и ссылки, эта часть, возможно, является одной из наиболее сложных частей, поэтому она требует большого чтения и понимания.
Чтобы понять внимание, вам нужно познакомиться с архитектурой трансформатора и их предшественниками. Вот несколько ресурсов, чтобы начать вас:
Основным узким местом самопринятого является его квадратичная сложность по отношению к длине последовательности. Чтобы понять недостатки самостоятельного присмотра, вам понадобится ознакомиться с альтернативами внимания, следующее поможет вам начать:
Существует несколько способов кодировать позиционную информацию в LLMS, наиболее распространенным способом является использование синусоидальных позиционных кодировки, известных как абсолютные позиционные кодировки. Другие методы включают в себя относительные позиционные кодирования и новые методы, такие как роторные позиционные встраивания. Вот несколько ресурсов, чтобы начать вас:
Чтобы понять кв кв, вы должны быть знакомы с архитектурой трансформатора и ее ограничениями.
Рекомендуемое чтение:
Смесь экспертов - это тип архитектуры в LLMS, чтобы понять, как она работает, вы должны пройти следующие ресурсы, которые охватывают наиболее выдающиеся модели MOE: