заглушки Полное руководство для начинающих по инструментам Hugging Face LLM — Unite.AI
Свяжитесь с нами:

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

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

mm
обновленный on
ОБНИМАНИЕ ЛИЦА – ПОЛНОЕ РУКОВОДСТВО

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

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

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

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

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

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

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

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

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

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

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

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

  • Задача рассуждения AI2 (25 кадров) — серия вопросов по программе элементарных естественных наук.
  • ХеллаСваг (10 выстрелов) — тест на логический вывод, который, несмотря на простоту для людей, представляет собой серьезную проблему для передовых моделей.
  • ММЛУ (5 шагов) — многогранная оценка, касающаяся владения текстовой моделью в 57 различных областях, включая, среди прочего, базовую математику, право и информатику.
  • Правдивый контроль качества (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() библиотеки служит концентратором, охватывающим другие конвейеры и облегчающим выполнение конкретных задач в аудио, видео и мультимодальных областях.

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

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

Классификация текста становится проще простого с помощью функции конвейера () 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. Мое постоянное любопытство также привлекло меня к обработке естественного языка, области, которую я очень хочу исследовать дальше.