Полное руководство для начинающих по инструментам Hugging Face LLM

Полное руководство для начинающих по инструментам Hugging Face LLM

Hugging Face — это исследовательская лаборатория и центр искусственного интеллекта, который создал сообщество ученых, исследователей и энтузиастов. За короткий промежуток времени Hugging Face завоевала значительное присутствие в сфере искусственного интеллекта. Технологические гиганты, в том числе Google, Amazon и Nvidia, поддержали AI-стартап Hugging Face значительными инвестициями, в результате чего его оценка составила 4,5 миллиарда долларов.

В этом руководстве мы познакомим вас с трансформерами, LLM и тем, как библиотека Hugging Face играет важную роль в развитии сообщества искусственного интеллекта с открытым исходным кодом. Мы также рассмотрим основные функции Hugging Face, включая конвейеры, наборы данных, модели и многое другое, на практических примерах Python.

Трансформеры в NLP

В 2017 году Корнельский университет опубликовал влиятельную статью, в которой были представлены трансформаторы. Это модели глубокого обучения, используемые в NLP. Это открытие послужило толчком к разработке крупных языковых моделей, таких как ChatGPT.

Большие языковые модели или LLM — это системы искусственного интеллекта, которые используют преобразователи для понимания и создания человеческого текста. Однако создание этих моделей обходится дорого, зачастую требуя миллионы долларов, что ограничивает их доступность для крупных компаний.

Hugging Face, основанный в 2016 году, стремится сделать модели NLP доступными для всех. Несмотря на то, что это коммерческая компания, она предлагает ряд ресурсов с открытым исходным кодом, помогающих людям и организациям создавать и использовать модели трансформаторов по доступным ценам. Машинное обучение – это обучение компьютеров выполнять задачи путем распознавания закономерностей, в то время как глубокое обучение, разновидность машинного обучения, создает сеть, которая обучается независимо. Трансформаторы — это тип архитектуры глубокого обучения, которая эффективно и гибко использует входные данные, что делает ее популярным выбором для построения больших языковых моделей из-за меньших затрат времени на обучение.

Как объятие лица облегчает проекты NLP и LLM

Полное руководство для начинающих по инструментам Hugging Face LLM

Hugging Face упростила работу с LLM, предложив:

  • Широкий выбор предварительно обученных моделей.
  • Инструменты и примеры для точной настройки этих моделей в соответствии с вашими конкретными потребностями.
  • Простые варианты развертывания для различных сред.

Отличный ресурс, доступный через Hugging Face, — это таблица лидеров Open LLM. Функционируя как комплексная платформа, она систематически отслеживает, ранжирует и измеряет эффективность спектра моделей больших языков (LLM) и чат-ботов, обеспечивая тщательный анализ достижений в области открытого исходного кода.

LLM Benchmarks измеряет модели по четырем показателям:

  • AI2 Reasoning Challenge (25 вопросов) — серия вопросов по программе элементарных естественных наук.
  • HellaSwag (10 шагов) — тест на логический вывод, который, несмотря на простоту для людей, представляет собой серьезную проблему для передовых моделей.
  • MMLU (5 этапов) — многогранная оценка, затрагивающая навыки работы с текстовой моделью в 57 различных областях, включая, среди прочего, базовую математику, право и информатику.
  • TruthfulQA (0-shot) — инструмент для определения склонности модели повторять часто встречающуюся в Интернете дезинформацию.

Тесты, которые описываются с использованием таких терминов, как «25 кадров», «10 кадров», «5 кадров» и «0 кадров», указывают количество подсказок, которые модели предоставляются в процессе оценки. оценить его работоспособность и способности к рассуждению в различных областях. В парадигмах «несколько кадров» моделям предоставляется небольшое количество примеров, которые помогут им правильно реагировать, тогда как в условиях «0 кадров» модели не получают примеров и должны полагаться исключительно на свои уже существующие знания, чтобы реагировать соответствующим образом..

Компоненты обнимающего лица

Трубопроводы

«Конвейеры » являются частью библиотеки трансформеров Hugging Face — функции, которая помогает легко использовать предварительно обученные модели, доступные в репозитории Hugging Face. Он предоставляет интуитивно понятный API для множества задач, включая анализ настроений, ответы на вопросы, моделирование языка в масках, распознавание именованных объектов и обобщение.

Конвейеры объединяют три центральных компонента Hugging Face:

  • Токенизатор: подготавливает текст для модели, преобразуя его в формат, понятный модели.
  • Модель: это сердце конвейера, где фактические прогнозы делаются на основе предварительно обработанных входных данных.
  • Постпроцессор: преобразует необработанные прогнозы модели в удобочитаемую форму.

Эти конвейеры не только сокращают объем кодирования, но и предлагают удобный интерфейс для выполнения различных задач NLP.

Приложения-трансформеры, использующие библиотеку Hugging Face

Изюминкой библиотеки Hugging Face является библиотека Transformers, которая упрощает задачи NLP, соединяя модель с необходимыми этапами предварительной и постобработки, оптимизируя процесс анализа. Чтобы установить и импортировать библиотеку, используйте следующие команды:

pip install -q transformers from transformers import pipeline

Сделав это, вы можете выполнять задачи NLP, начиная с анализа настроений, который классифицирует текст на положительные или отрицательные настроения. Мощная функция Pipeline() библиотеки служит концентратором, охватывающим другие конвейеры и облегчающим выполнение конкретных задач в аудио, видео и мультимодальных областях.

Практическое применение

Классификация текста

Классификация текста становится проще простого с помощью функции конвейера () Hugging Face. Вот как можно запустить конвейер классификации текста:

classifier = pipeline("text-classification")

Для практического опыта добавьте строку или список строк в свой конвейер, чтобы получить прогнозы, которые можно аккуратно визуализировать с помощью библиотеки Python Pandas. Ниже приведен фрагмент Python, демонстрирующий это:

sentences = ["I am thrilled to introduce you to the wonderful world of AI.", "Hopefully, it won't disappoint you."] # Get classification results for each sentence in the list results = classifier(sentences) # Loop through each result and print the label and score for i, result in enumerate(results): print(f"Result {i + 1}:") print(f" Label: {result['label']}") print(f" Score: {round(result['score'], 3)}\n")

Выход

Result 1: Label: POSITIVE Score: 1.0 Result 2: Label: POSITIVE Score: 0.996

Распознавание именованных объектов (NER)

NER играет решающую роль в извлечении из текста объектов реального мира, называемых «именованными сущностями». Используйте конвейер NER для эффективной идентификации этих объектов:

ner_tagger = pipeline("ner", aggregation_strategy="simple") text = "Elon Musk is the CEO of SpaceX." outputs = ner_tagger(text) print(outputs)

Выход

Result 1: Label: POSITIVE Score: 1.0 Result 2: Label: POSITIVE Score: 0.996

Вопрос Ответ

Ответ на вопрос предполагает извлечение точных ответов на конкретные вопросы из данного контекста. Инициализируйте конвейер вопросов-ответов и введите свой вопрос и контекст, чтобы получить желаемый ответ:

reader = pipeline("question-answering") text = "Hugging Face is a company creating tools for NLP. It is based in New York and was founded in 2016." question = "Where is Hugging Face based?" outputs = reader(question=question, context=text) print(outputs)

Выход

{'score': 0.998, 'start': 51, 'end': 60, 'answer': 'New York'}

Функция конвейера Hugging Face предлагает множество готовых конвейеров для различных задач, помимо классификации текста, NER и ответов на вопросы. Ниже приведены подробные сведения о подмножестве доступных задач:

Подробные описания и дополнительные задачи можно найти в <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fhuggingface.co%2Fdocs%2Ftransformers%2Fmain%2Fen%2Fmain_classes%2Fpipelines%23transformers.pipeline&postId=845612" rel="nofollow noreferrer noopener" target="_blank">документации по конвейеру на сайте Hugging Face</a> .
Подробные описания и дополнительные задачи можно найти в документации по конвейеру на сайте Hugging Face .

Почему Hugging Face переключает свое внимание на Rust

<p>Обнимающее лицо Safetensors и токенизатор Страница GitHub</p>

Обнимающее лицо Safetensors и токенизатор Страница GitHub

Экосистема Hugging Face (HF) начала использовать Rust в своих библиотеках, таких как сейфсенсоры и токенизаторы.

Hugging Face совсем недавно также выпустила новую среду машинного обучения под названием Candle. В отличие от традиционных фреймворков, использующих Python, Candle построен на Rust. Цель использования Rust — повысить производительность и упростить работу пользователя при поддержке операций с графическим процессором.

Основная цель Candle — облегчить бессерверный вывод, сделав возможным развертывание облегченных двоичных файлов и исключив Python из производственных рабочих нагрузок, который иногда может замедлять процессы из-за своих накладных расходов. Эта платформа представляет собой решение для преодоления проблем, возникающих в средах полного машинного обучения, таких как PyTorch, которые являются большими и медленными при создании экземпляров в кластере.

Давайте выясним, почему Rust становится гораздо более предпочтительным выбором, чем Python.

  • Скорость и производительность. Rust известен своей невероятной скоростью, превосходящей Python, который традиционно используется в средах машинного обучения. Производительность Python иногда может замедляться из-за его Global Interpreter Lock (GIL), но Rust не сталкивается с этой проблемой, обещая более быстрое выполнение задач и, как следствие, повышение производительности в проектах, где он реализован.
  • Безопасность. Rust обеспечивает гарантии безопасности памяти без сборщика мусора, что является важным аспектом для обеспечения безопасности параллельных систем. Это играет решающую роль в таких областях, как безопасные тензоры, где безопасность при работе со структурами данных является приоритетом.

Предохранители

Safetensors выигрывают от скорости и безопасности Rust. Safetensors включает в себя манипулирование тензорами, сложной математической сущностью, и наличие Rust гарантирует, что операции выполняются не только быстро, но и безопасно, избегая распространенных ошибок и проблем безопасности, которые могут возникнуть из-за неправильного обращения с памятью.

токенизатор

Токенизаторы разбивают предложения или фразы на более мелкие единицы, такие как слова или термины. Rust помогает в этом процессе, ускоряя время выполнения, гарантируя, что процесс токенизации будет не только точным, но и быстрым, повышая эффективность задач обработки естественного языка.

В основе токенизатора Hugging Face лежит концепция токенизации подслов, обеспечивающая тонкий баланс между токенизацией на уровне слов и символов для оптимизации сохранения информации и размера словарного запаса. Он функционирует за счет создания подтокенов, таких как «##ing » и «##ed », сохраняя семантическое богатство и избегая при этом раздутого словарного запаса.

Полное руководство для начинающих по инструментам Hugging Face LLM

Токенизация подслов включает этап обучения для определения наиболее эффективного баланса между токенизацией на уровне символов и слов. Это выходит за рамки простых правил префиксов и суффиксов и требует всестороннего анализа языковых шаблонов в обширных текстовых корпусах для разработки эффективного токенизатора подслов. Сгенерированный токенизатор умеет обрабатывать новые слова, разбивая их на известные подслова, поддерживая высокий уровень семантического понимания.

Компоненты токенизации

Библиотека токенизаторов делит процесс токенизации на несколько этапов, каждый из которых затрагивает отдельный аспект токенизации. Давайте углубимся в эти компоненты:

  • Нормализатор: выполняет начальные преобразования входной строки, применяя необходимые настройки, такие как преобразование в нижний регистр, нормализация Юникода и удаление.
  • PreTokenizer: отвечает за фрагментацию входной строки на предварительные сегменты, определяя разделение на основе предопределенных правил, таких как разграничение пространства.
  • Модель: контролирует обнаружение и создание субтокенов, адаптируясь к специфике ваших входных данных и предлагая возможности обучения.
  • Постпроцессор: расширяет возможности конструкции для облегчения совместимости со многими моделями на основе трансформатора, такими как BERT, путем добавления токенов, таких как [CLS] и [SEP].

Чтобы начать работу с токенизаторами Hugging Face, установите библиотеку с помощью команды pip install tokenizersи импортируйте ее в свою среду Python. Библиотека может токенизировать большие объемы текста за очень короткое время, тем самым экономя драгоценные вычислительные ресурсы для более интенсивных задач, таких как обучение модели.

Библиотека токенизаторов использует Rust, который наследует синтаксическое сходство C++, но при этом вводит новые концепции в проектирование языков программирования. В сочетании с привязками Python это гарантирует, что вы сможете насладиться производительностью языка более низкого уровня при работе в среде Python.

Наборы данных

Наборы данных являются основой проектов ИИ. Hugging Face предлагает широкий выбор наборов данных, подходящих для различных задач NLP и многого другого. Для их эффективного использования важно понимать процесс их загрузки и анализа. Ниже приведен хорошо прокомментированный скрипт Python, демонстрирующий, как исследовать наборы данных, доступные на Hugging Face:

from datasets import load_dataset # Load a dataset dataset = load_dataset('squad') # Display the first entry print(dataset[0])

Этот сценарий использует функцию load_dataset для загрузки набора данных SQuAD, который является популярным выбором для задач ответа на вопросы.

Использование предварительно обученных моделей и объединение всего этого

Предварительно обученные модели составляют основу многих проектов глубокого обучения, позволяя исследователям и разработчикам приступить к реализации своих инициатив, не начиная с нуля. Hugging Face облегчает исследование широкого спектра предварительно обученных моделей, как показано в коде ниже:

from transformers import AutoModelForQuestionAnswering, AutoTokenizer # Load the pre-trained model and tokenizer model = AutoModelForQuestionAnswering.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad') tokenizer = AutoTokenizer.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad') # Display the model's architecture print(model)

Загрузив модель и токенизатор, мы можем приступить к созданию функции, которая принимает на вход фрагмент текста и вопрос и возвращает ответ, извлеченный из текста. Мы будем использовать токенизатор для обработки входного текста и вопроса в формате, совместимом с моделью, а затем передадим эти обработанные входные данные в модель, чтобы получить ответ:

def get_answer(text, question): # Tokenize the input text and question inputs = tokenizer(question, text, return_tensors='pt', max_length=512, truncation=True) outputs = model(**inputs) # Get the start and end scores for the answer answer_start = torch.argmax(outputs.start_logits) answer_end = torch.argmax(outputs.end_logits) + 1 answer = tokenizer.convert_tokens_to_string(tokenizer.convert_ids_to_tokens(inputs['input_ids'][0][answer_start:answer_end])) return answer

В фрагменте кода мы импортируем необходимые модули из пакета преобразователей, затем загружаем предварительно обученную модель и соответствующий ей токенизатор с помощью метода from_pretrained. Мы выбираем модель BERT, точно настроенную на наборе данных SQuAD.

Давайте посмотрим пример использования этой функции, когда у нас есть абзац текста, и мы хотим извлечь из него конкретный ответ на вопрос:

text = """ The Eiffel Tower, located in Paris, France, is one of the most iconic landmarks in the world. It was designed by Gustave Eiffel and completed in 1889. The tower stands at a height of 324 meters and was the tallest man-made structure in the world at the time of its completion. """ question = "Who designed the Eiffel Tower?" # Get the answer to the question answer = get_answer(text, question) print(f"The answer to the question is: {answer}") # Output: The answer to the question is: Gustave Eiffel

В этом скрипте мы создаем функцию get_answer, которая принимает текст и вопрос, соответствующим образом токенизирует их и использует предварительно обученную модель BERT для извлечения ответа из текста. Он демонстрирует практическое применение библиотеки трансформеров Hugging Face для создания простой, но мощной системы вопросов и ответов. Чтобы хорошо усвоить концепции, рекомендуется провести практические эксперименты с помощью блокнота Google Colab.

Заключение

Благодаря обширному набору инструментов с открытым исходным кодом, предварительно обученных моделей и удобных для пользователя конвейеров он позволяет как опытным профессионалам, так и новичкам погружаться в обширный мир искусственного интеллекта с чувством легкости и понимания. Более того, инициатива по интеграции Rust, благодаря его скорости и функциям безопасности, подчеркивает стремление Hugging Face способствовать инновациям, обеспечивая при этом эффективность и безопасность приложений искусственного интеллекта. Преобразующая работа Hugging Face не только демократизирует доступ к инструментам искусственного интеллекта высокого уровня, но и создает среду сотрудничества для обучения и развития в сфере искусственного интеллекта, способствуя будущему, в котором искусственный интеллект будет доступен для всех.

11
Начать дискуссию