Свяжитесь с нами:

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

Инструменты ИИ 101

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

mm
ОБНИМАНИЕ ЛИЦА – ПОЛНОЕ РУКОВОДСТВО

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

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

Трансформеры в НЛП

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

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

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

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

Экосистема обнимающего лица — модели, наборы данных, метрики, преобразователи, ускорение, токенизаторы

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

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

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

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

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

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

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

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

'трубопроводы' являются частью библиотеки трансформеров Hugging Face, которая упрощает использование предварительно обученных моделей, доступных в репозитории Hugging Face. Она предоставляет интуитивно понятный API для решения различных задач, включая анализ тональности, ответы на вопросы, моделирование языка в масках, распознавание именованных сущностей и реферирование.

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

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

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

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

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

pip install -q transformers
from transformers import pipeline

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

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

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

Классификация текста становится проще благодаря функции 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)

Результат

 Elon Musk: PER, SpaceX: ORG 

Ответ на вопрос

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

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 и ответов на вопросы. Ниже приведены сведения о подмножестве доступных задач:

Таблица: Задачи конвейера «Обнимание лица»

Сложность задачи Описание Идентификатор трубопровода
Генерация текста Генерировать текст на основе заданной подсказки конвейер (задача = «генерация текста»)
Суммирование Краткое изложение длинного текста или документа конвейер (задача = «суммирование»)
Классификация изображений Пометить входное изображение конвейер (задача = «классификация изображений»)
Классификация аудио Классифицировать аудиоданные конвейер (задача = «аудио-классификация»)
Визуальный ответ на вопрос Ответьте на запрос, используя изображение и вопрос. конвейер (задача = ”vqa”)

 

Подробное описание и дополнительные задачи см. документация по трубопроводу на сайте Hugging Face.

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

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

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

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

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

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

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

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

Защитные тензоры

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

Токенизатор

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

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

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

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

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

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

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

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

Datasets

Наборы данных являются основой проектов ИИ. Hugging Face предлагает широкий выбор наборов данных, подходящих для различных задач НЛП и многого другого. Для их эффективного использования важно понимать процесс их загрузки и анализа. Ниже приведен хорошо прокомментированный скрипт 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 не только демократизирует доступ к высокоуровневым инструментам ИИ, но и способствует созданию совместной среды для обучения и развития в сфере ИИ, способствуя будущему, в котором ИИ будет доступен для всех.

Последние пять лет я погружался в увлекательный мир машинного обучения и глубокого обучения. Моя страсть и опыт позволили мне принять участие в более чем 50 различных проектах по разработке программного обеспечения, уделяя особое внимание AI/ML. Мое постоянное любопытство также привлекло меня к обработке естественного языка, области, которую я очень хочу исследовать дальше.