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

Hugging Face – это исследовательская лаборатория ИИ и центр, который создал сообщество ученых, исследователей и энтузиастов. За короткий период времени Hugging Face приобрел значительное присутствие в пространстве ИИ. Технологические гиганты, включая Google, Amazon и Nvidia, существенно увеличили инвестиции в стартап Hugging Face, что сделало его стоимость $4,5 млрд.
В этом руководстве мы познакомим вас с трансформерами, LLM и ролью библиотеки Hugging Face в развитии открытого сообщества ИИ. Мы также рассмотрим основные функции Hugging Face, включая конвейеры, наборы данных, модели и многое другое, с практическими примерами на Python.
Трансформеры в NLP
В 2017 году Корнелльский университет опубликовал влиятельную статью, в которой были представлены трансформеры. Это глубокие модели обучения, используемые в NLP. Это открытие способствовало разработке крупных языковых моделей, таких как ChatGPT.
Крупные языковые модели или LLM – это системы ИИ, которые используют трансформеры для понимания и создания текста, похожего на человеческий. Однако создание этих моделей является дорогим, часто требующим миллионов долларов, что ограничивает их доступность для крупных компаний.
Hugging Face, основанная в 2016 году, стремится сделать модели NLP доступными для всех. Несмотря на то, что это коммерческая компания, она предлагает ряд открытых ресурсов, которые помогают людям и организациям доступно создавать и использовать модели трансформеров. Обучение машин – это обучение компьютеров выполнять задачи, распознавая закономерности, а глубокое обучение, подмножество обучения машин, создает сеть, которая учится самостоятельно. Трансформеры – это тип архитектуры глубокого обучения, который эффективно и гибко использует входные данные, что делает его популярным выбором для построения крупных языковых моделей из-за меньших требований к времени обучения.
Как Hugging Face облегчает проекты NLP и LLM
Hugging Face упрощает работу с LLM, предлагая:
- Широкий выбор предварительно обученных моделей для выбора.
- Инструменты и примеры для тонкой настройки этих моделей для ваших конкретных потребностей.
- Легкие варианты развертывания для различных сред.
Отличный ресурс, доступный через Hugging Face, – это Open LLM Leaderboard. Функционируя как комплексная платформа, она систематически отслеживает, ранжирует и оценивает эффективность спектра крупных языковых моделей (LLM) и чат-ботов, предоставляя проницательный анализ достижений в области открытого исходного кода
LLM Benchmarks измеряет модели по четырем метрикам:
- AI2 Reasoning Challenge (25-shot) – серия вопросов по элементарной научной программе.
- HellaSwag (10-shot) – тест на вывод общего смысла, который, хотя и прост для людей, является значительной проблемой для передовых моделей.
- MMLU (5-shot) – многогранный тест, затрагивающий профессиональность текстовой модели в 57 различных областях, включая базовую математику, право и компьютерные науки, среди прочих.
- TruthfulQA (0-shot) – инструмент для определения тенденции модели к повторению часто встречающейся в Интернете дезинформации.
Эти метрики, описываемые терминами, такими как “25-shot”, “10-shot”, “5-shot” и “0-shot”, указывают на количество примеров подсказок, которые модель получает во время процесса оценки для оценки ее производительности и способностей к рассуждению в различных областях. В “few-shot” парадигмах модели предоставляются с небольшим количеством примеров, чтобы помочь направить их ответы, тогда как в “0-shot” настройке модели не предоставляются примеры и они должны полагаться исключительно на свои предварительные знания, чтобы ответить соответствующим образом.
Компоненты Hugging Face
Конвейеры
‘Конвейеры’ являются частью библиотеки трансформеров Hugging Face – функцией, которая помогает в легком использовании предварительно обученных моделей, доступных в репозитории Hugging Face. Она предоставляет интуитивно понятный API для ряда задач, включая анализ настроений, ответы на вопросы, моделирование языка с маскированием, распознавание именованных сущностей и суммаризацию.
Конвейеры интегрируют три центральных компонента Hugging Face:
- Токенизатор: Подготавливает ваш текст для модели, преобразуя его в формат, который может понять модель.
- Модель: Это сердце конвейера, где фактические прогнозы делаются на основе предварительно обработанного входного сигнала.
- Пост-процессор: Преобразует сырые прогнозы модели в читаемую для человека форму.
Эти конвейеры не только сокращают обширный код, но также предлагают пользовательский интерфейс для выполнения различных задач NLP.
Применения трансформеров с использованием библиотеки Hugging Face
Выделение библиотеки Hugging Face – это библиотека Трансформеров, которая упрощает задачи NLP, соединяя модель с необходимыми пред- и пост-обработочными стадиями, оптимизируя процесс анализа. Чтобы установить и импортировать библиотеку, используйте следующие команды:
pip install -q transformers from transformers import pipeline
После этого вы можете выполнять задачи NLP, начиная с анализа настроений, который классифицирует текст на положительные или отрицательные настроения. Мощная функция pipeline() библиотеки служит центром, охватывающим другие конвейеры и облегчающим применение для конкретных задач в аудио-, визуальных и многомодальных областях.
Практические применения
Классификация текста
Классификация текста становится легкой с помощью функции pipeline() Hugging Face. Вот как вы можете инициировать конвейер классификации текста:
classifier = pipeline("text-classification")
Для практического опыта подайте строку или список строк в ваш конвейер, чтобы получить прогнозы, которые можно аккуратно визуализировать с помощью библиотеки Pandas Python. Ниже приведен фрагмент Python, демонстрирующий это:
sentences = ["I am thrilled to introduce you to the wonderful world of AI.",
"Hopefully, it won't disappoint you."]
# Получите результаты классификации для каждого предложения в списке
results = classifier(sentences)
# Переберите каждый результат и распечатайте метку и счет
for i, result in enumerate(results):
print(f"Result {i + 1}:")
print(f" Label: {result['label']}")
print(f" Score: {round(result['score'], 3)}\n")
Вывод
1.0 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'} Функция pipeline() Hugging Face предлагает ряд предварительно построенных конвейеров для различных задач, помимо классификации текста, NER и ответов на вопросы. Ниже приведены подробности о подмножестве доступных задач:
Таблица: Задачи конвейера Hugging Face
| Задача | Описание | Идентификатор конвейера |
| Генерация текста | Генерирует текст на основе заданной подсказки | pipeline(task=”text-generation”) |
| Суммаризация | Суммирует длинный текст или документ | pipeline(task=”summarization”) |
| Классификация изображений | Метки входного изображения | pipeline(task=”image-classification”) |
| Классификация аудио | Категоризация аудиоданных | pipeline(task=”audio-classification”) |
| Визуальные ответы на вопросы | Ответ на вопрос, используя как изображение, так и вопрос | pipeline(task=”vqa”) |
Для подробных описаний и большего количества задач обратитесь к документации конвейера на сайте Hugging Face.
Почему Hugging Face смещает фокус на Rust
Экосистема Hugging Face (HF) начала использовать Rust в своих библиотеках, таких как safesensors и tokenizers.
Hugging Face также недавно выпустила новый фреймворк машинного обучения под названием Candle. В отличие от традиционных фреймворков, которые используют Python, Candle построен на Rust. Цель использования Rust – улучшить производительность и упростить пользовательский опыт, поддерживая операции GPU.
Основная цель Candle – облегчить бессерверную инференцию, что делает возможным развертывание легковесных бинарных файлов и удаляет Python из рабочих нагрузок производства, что может иногда замедлить процессы из-за его накладных расходов. Этот фреймворк появляется как решение проблем, с которыми сталкиваются полные фреймворки машинного обучения, такие как PyTorch, которые большие и медленные при создании экземпляров в кластере.
Давайте исследуем, почему Rust становится более предпочтительным выбором, чем Python.
- Скорость и производительность – Rust известен своей невероятной скоростью, превосходящей Python, который традиционно используется в фреймворках машинного обучения. Производительность Python может иногда быть замедлена из-за его Глобального интерпретатора блокировки (GIL), но Rust не сталкивается с этой проблемой, обещая более быстрое выполнение задач и, следовательно, лучшую производительность в проектах, где он реализован.
- Безопасность – Rust обеспечивает гарантии безопасности памяти без сборщика мусора, аспект, который имеет решающее значение для обеспечения безопасности параллельных систем. Это играет важную роль в областях, таких как safetensors, где безопасность при обработке структур данных имеет приоритет.
Safetensors
Safetensors выигрывают от функций скорости и безопасности Rust. Safetensors включает в себя манипуляции с тензорами, сложной математической сущностью, и наличие Rust гарантирует, что операции не только быстрые, но и безопасные, избегая общих ошибок и проблем безопасности, которые могут возникнуть из-за неправильного обращения с памятью.
Токенизатор
Токенизаторы обрабатывают разбиение предложений или фраз на более мелкие единицы, такие как слова или термины. Rust помогает в этом процессе, ускоряя время выполнения, гарантируя, что процесс токенизации не только точен, но и быстр, повышая эффективность задач обработки естественного языка.
В основе токенизатора Hugging Face лежит концепция субсловной токенизации, которая балансирует слово- и символ-уровневую токенизацию, чтобы оптимизировать сохранение информации и размер словаря. Она функционирует путем создания субтокенов, таких как “##ing” и “##ed”, сохраняя богатство смысла, избегая при этом разбухания словаря.
Субсловная токенизация включает в себя фазу обучения для определения наиболее эффективного баланса между символ- и слово-уровневой токенизацией. Она выходит за рамки простых правил префиксов и суффиксов, требуя всестороннего анализа языковых закономерностей в обширных текстовых корпусах для проектирования эффективного субсловного токенизатора. Сгенерированный токенизатор способен обрабатывать новые слова, разбивая их на известные субслова, сохраняя при этом высокий уровень понимания смысла.
Компоненты токенизации
Библиотека токенизаторов делит процесс токенизации на несколько этапов, каждый из которых решает отдельный аспект токенизации. Давайте углубимся в эти компоненты:
- Нормализатор: Применяет первоначальные преобразования к входной строке, применяя необходимые корректировки, такие как преобразование в нижний регистр, нормализация Юникода и удаление.
- Предтокенизатор: Отвечает за фрагментацию входной строки на предсегменты, определяя разрывы на основе предварительно определенных правил, таких как разделения по пробелам.
- Модель: Контролирует обнаружение и создание субтокенов, адаптируясь к конкретикам вашего входного данных и предлагая возможности обучения.
- Пост-процессор: Улучшает функции построения, чтобы обеспечить совместимость с многими моделями, основанными на трансформерах, такими как BERT, добавляя токены, такие как [CLS] и [SEP].
Чтобы начать работать с токенизаторами Hugging Face, установите библиотеку, используя команду pip install tokenizers, и импортируйте ее в вашу среду Python. Библиотека может токенизировать большие объемы текста за очень короткое время, экономя ценные вычислительные ресурсы для более интенсивных задач, таких как обучение моделей.
Библиотека токенизаторов использует Rust, который наследует синтаксическую схожесть с C++, вводя новые концепции в проектировании языка программирования. В сочетании с привязками Python это гарантирует, что вы наслаждаетесь производительностью языка более низкого уровня, работая в среде Python.
Наборы данных
Наборы данных являются основой проектов ИИ. Hugging Face предлагает широкий спектр наборов данных, подходящих для различных задач NLP и других. Чтобы использовать их эффективно, понимание процесса загрузки и анализа их имеет решающее значение. Ниже приведен хорошо прокомментированный скрипт Python, демонстрирующий, как изучить наборы данных, доступные на Hugging Face:
from datasets import load_dataset
# Загрузите набор данных
dataset = load_dataset('squad')
# Отобразите первую запись
print(dataset[0])
Этот скрипт использует функцию load_dataset для загрузки набора данных SQuAD, который является популярным выбором для задач ответов на вопросы.
Использование предварительно обученных моделей и объединение всего
Предварительно обученные модели составляют основу многих проектов глубокого обучения, позволяя исследователям и разработчикам начинать свои инициативы без начала с нуля. Hugging Face облегчает изучение широкого спектра предварительно обученных моделей, как показано в коде ниже:
from transformers import AutoModelForQuestionAnswering, AutoTokenizer
# Загрузите предварительно обученную модель и токенизатор
model = AutoModelForQuestionAnswering.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
tokenizer = AutoTokenizer.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
# Отобразите архитектуру модели
print(model)
С загруженной моделью и токенизатором вы можете создать функцию, которая принимает текст и вопрос в качестве входных данных и возвращает ответ, извлеченный из текста. Вы будете использовать токенизатор для обработки входного текста и вопроса в формат, совместимый с моделью, а затем подадите этот обработанный вход в модель, чтобы получить ответ:
def get_answer(text, question): # Токенизируйте входной текст и вопрос inputs = tokenizer(question, text, return_tensors='pt', max_length=512, truncation=True) outputs = model(**inputs) # Получите начальные и конечные баллы для ответа 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
В этом фрагменте кода мы импортируем необходимые модули из пакета transformers, затем загружаем предварительно обученную модель и ее соответствующий токенизатор, используя метод 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?"
# Получите ответ на вопрос
answer = get_answer(text, question)
print(f"The answer to the question is: {answer}")
# Вывод: The answer to the question is: Gustave Eiffel
В этом скрипте мы строим функцию get_answer, которая принимает текст и вопрос, токенизирует их соответствующим образом и использует предварительно обученную модель BERT для извлечения ответа из текста. Это демонстрирует практическое применение библиотеки трансформеров Hugging Face для создания простой, но мощной системы ответов на вопросы. Чтобы хорошо понять концепции, рекомендуется провести практический эксперимент, используя Google Colab Notebook.
Заключение
Через свой обширный спектр открытых инструментов, предварительно обученных моделей и удобных конвейеров Hugging Face позволяет как опытным профессионалам, так и новичкам проникнуть в обширный мир ИИ с чувством легкости и понимания. Кроме того, инициатива интегрировать Rust, благодаря его скорости и функциям безопасности, подчеркивает приверженность Hugging Face содействию инновациям, обеспечивая при этом эффективность и безопасность в приложениях ИИ. Трансформационная работа Hugging Face не только демократизирует доступ к высокоуровневым инструментам ИИ, но и создает сотрудническую среду для обучения и развития в области ИИ, облегчая будущее, в котором ИИ доступен всем.

















