заглушки Повний посібник для початківців з інструментів LLM Hugging Face - Unite.AI
Зв'язатися з нами

Інструменти ШІ 101

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

mm
оновлений on
ОБНІМАННЯ ОБЛИЧЧЯ - ПОВНИЙ ПОСІБНИК

Hugging Face — це дослідницька лабораторія та центр штучного інтелекту, який створив спільноту вчених, дослідників та ентузіастів. За короткий проміжок часу Hugging Face завоював значну присутність у просторі ШІ. Технічні гіганти зокрема Google, Amazon і Nvidia, підтримали стартап зі штучним інтелектом Hugging Face значними інвестиціями, зробивши його оцінку 4.5 млрд доларів .

У цьому посібнику ми познайомимося з трансформерами, LLM і тим, як бібліотека Hugging Face відіграє важливу роль у розвитку спільноти ШІ з відкритим кодом. Ми також розглянемо основні функції Hugging Face, включаючи конвеєри, набори даних, моделі тощо, на практичних прикладах Python.

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

У 2017 році Корнельський університет опублікував впливову статтю, яка представила Трансформатори. Це моделі глибокого навчання, які використовуються в НЛП. Це відкриття сприяло розробці великих мовних моделей, як ChatGPT.

Великі мовні моделі або LLM — це системи штучного інтелекту, які використовують трансформатори для розуміння та створення людського тексту. Однак створення цих моделей дороге, часто потребує мільйони доларів, що обмежує їх доступність для великих компаній.

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

Як обіймати обличчя полегшує проекти NLP та LLM

Екосистема обличчя, що обіймається – моделі, набір даних, метрики, трансформатори, прискорення, токенізатори

Hugging Face спростив роботу з LLM, пропонуючи:

  1. Різноманітність попередньо навчених моделей на вибір.
  2. Інструменти та приклади для точного налаштування цих моделей відповідно до ваших потреб.
  3. Прості варіанти розгортання для різних середовищ.

Чудовим ресурсом, доступним через Hugging Face, є Відкрийте таблицю лідерів LLM. Функціонуючи як комплексна платформа, він систематично відстежує, ранжує та оцінює ефективність спектру великих мовних моделей (LLM) і чат-ботів, надаючи глибокий аналіз досягнень у сфері відкритого коду.

LLM Benchmarks вимірює моделі за чотирма показниками:

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

Еталонні показники, які описуються за допомогою таких термінів, як «25 кадрів», «10 кадрів», «5 кадрів» і «0 кадрів», вказують на кількість оперативних прикладів, які надається моделі під час процесу оцінювання. щоб оцінити його продуктивність і здатність міркувати в різних сферах. У парадигмах «кількох випадків» моделям надається невелика кількість прикладів, які допомагають скерувати їхні відповіді, тоді як у налаштуваннях «0-пострілів» моделі не отримують прикладів і повинні покладатися виключно на свої попередні знання, щоб відповідати належним чином. .

Компоненти Hugging Face

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

'трубопроводи' є частиною бібліотеки трансформаторів Hugging Face, яка допомагає легко використовувати попередньо навчені моделі, доступні в репозиторії Hugging Face. Він надає інтуїтивно зрозумілий API для низки завдань, включаючи аналіз настроїв, відповіді на запитання, моделювання мови в масках, розпізнавання іменованих об’єктів і підсумовування.

Конвеєри об’єднують три центральні компоненти Hugging Face:

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

Ці конвеєри не тільки скорочують кодування, але й пропонують зручний інтерфейс для виконання різноманітних завдань NLP.

Програми Transformer, що використовують бібліотеку Hugging Face

Особливістю бібліотеки Hugging Face є бібліотека Transformers, яка спрощує завдання NLP, поєднуючи модель із необхідними етапами попередньої та постобробки, спрощуючи процес аналізу. Щоб встановити та імпортувати бібліотеку, скористайтеся такими командами:

pip install -q transformers
from transformers import pipeline

Зробивши це, ви можете виконувати завдання НЛП, починаючи з аналізу настроїв, який класифікує текст на позитивні чи негативні настрої. Потужна функція 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."]
# 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 і відповідей на запитання. Нижче наведено відомості про підмножину доступних завдань:

Таблиця: Конвеєрні завдання з обіймами

ЗавданняОписІдентифікатор трубопроводу
Генерація текстуСтворення тексту на основі заданої підказкиpipeline(task=”text-generation”)
УзагальненняРезюмуйте довгий текст або документpipeline(task=”summarization”)
Класифікація зображеньПозначте вхідне зображенняpipeline(task=”image-classification”)
Класифікація звукуКласифікуйте аудіоданіpipeline(task=”audio-classification”)
Візуальна відповідь на питанняДайте відповідь на запит, використовуючи як зображення, так і запитанняpipeline(task=”vqa”)

 

Детальні описи та інші завдання див документація трубопроводу на веб-сайті Hugging Face.

Чому Hugging Face зміщує свою увагу на Rust

Обіймає обличчя Safetensors і tokenizer Rust

Обіймає обличчя Safetensors і tokenizer Сторінка GitHub

Екосистема Hugging Face (HF) почала використовувати Rust у своїх бібліотеках, таких як сейфи та токенізери.

Hugging Face зовсім недавно також випустив нову структуру машинного навчання під назвою Свічка. На відміну від традиційних фреймворків, які використовують Python, Candle створено за допомогою Rust. Метою використання Rust є підвищення продуктивності та спрощення взаємодії з користувачем, підтримуючи операції GPU.

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

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

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

Safetensors

Safetensors скористайтеся функціями швидкості та безпеки Rust. Safetensors передбачає маніпулювання тензорами, складною математичною сутністю, і наявність Rust гарантує, що операції не тільки швидкі, але й безпечні, уникаючи типових помилок і проблем безпеки, які можуть виникнути через неправильне використання пам’яті.

Токенізатор

Токенізатори розбивати речення чи фрази на менші одиниці, наприклад слова чи терміни. Rust допомагає в цьому процесі, прискорюючи час виконання, гарантуючи, що процес токенізації є не лише точним, але й швидким, підвищуючи ефективність завдань обробки природної мови.

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

Токенізація підслова передбачає фазу навчання для визначення найбільш ефективного балансу між токенізацією на рівні символів і слів. Це виходить за рамки простих правил префіксів і суфіксів, вимагаючи комплексного аналізу мовних шаблонів у великих текстових корпусах для розробки ефективного токенізера підслів. Згенерований токенізер вправно обробляє нові слова, розбиваючи їх на відомі підслова, зберігаючи високий рівень семантичного розуміння.

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

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

  • Нормалізатор: виконує початкові перетворення вхідного рядка, застосовуючи необхідні коригування, такі як перетворення нижнього регістру, нормалізація Unicode та видалення.
  • PreTokenizer: Відповідає за фрагментацію вхідного рядка на попередні сегменти, визначення поділів на основі попередньо визначених правил, таких як розмежування простору.
  • Model: контролює виявлення та створення субтокенів, пристосовуючи до особливостей ваших вхідних даних і пропонуючи можливості навчання.
  • Постпроцесор: покращує особливості конструкції для полегшення сумісності з багатьма моделями на основі трансформаторів, як-от BERT, шляхом додавання таких маркерів, як [CLS] і [SEP].

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

Бібліотека токенізаторів використовує Іржа який успадковує синтаксичну подібність C++, одночасно вводячи нові концепції в дизайн мови програмування. У поєднанні з прив’язками Python це гарантує вам задоволення від продуктивності мови нижчого рівня під час роботи в середовищі Python.

Набори даних

Бази даних є основою проектів ШІ. 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

У фрагменті коду ми імпортуємо необхідні модулі з пакета 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?"
# 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 для створення простої, але потужної системи відповідей на запитання. Щоб добре зрозуміти концепції, рекомендується провести практичний експеримент за допомогою a Блокнот Google Colab.

Висновок

Завдяки широкому спектру інструментів з відкритим кодом, попередньо навченим моделям і зручним конвеєрам він дає змогу як досвідченим професіоналам, так і новачкам легко та зрозуміло занурюватися у широкий світ ШІ. Крім того, ініціатива щодо інтеграції Rust завдяки його швидкості та функціям безпеки підкреслює прагнення Hugging Face сприяти інноваціям, забезпечуючи при цьому ефективність і безпеку в додатках ШІ. Трансформаційна робота Hugging Face не лише демократизує доступ до високорівневих інструментів штучного інтелекту, але й підтримує середовище співпраці для навчання та розвитку в просторі штучного інтелекту, сприяючи майбутньому, де штучний інтелект буде доступним для

Останні п’ять років я провів, занурюючись у захоплюючий світ машинного та глибокого навчання. Моя пристрасть і досвід допомогли мені внести свій внесок у понад 50 різноманітних проектів розробки програмного забезпечення, зосередивши особливу увагу на ШІ/ML. Моя постійна цікавість також привела мене до обробки природної мови, галузі, яку я хочу досліджувати далі.