Раскрытие возможностей локальных генеративных моделей ИИ: обеспечение конфиденциальности данных без зависимости от внешнего API
В последние месяцы большие языковые модели, или LLM, и генеративные модели ИИ штурмом захватили мир, изменив способ нашего взаимодействия с технологиями и предоставив широкий спектр интересных приложений. От обработки естественного языка и чат-ботов до творческого письма и даже искусства — возможности этих мощных инструментов безграничны.
Однако многие из существующих решений для этих моделей требуют использования внешних API или облачных сервисов, что может вызывать опасения по поводу конфиденциальности и безопасности данных. К счастью, эти модели можно запускать на вашем локальном компьютере, что позволит вам полностью раскрыть их потенциал, сохраняя конфиденциальность и безопасность ваших данных.
В этой статье мы рассмотрим некоторые преимущества запуска больших языковых моделей и генеративных моделей ИИ на вашем локальном компьютере, а также представим языковые модели ALPACA — LLaMa, которые разработаны специально для этой цели. Я также покажу некоторые варианты использования, относящиеся к обработке неструктурированных данных в страховой отрасли с использованием модели Alpaca-LLaMa.
Чтобы продемонстрировать это, я использовал экземпляр Google Colab. Но это вполне может быть и ваша локальная машина! Ссылка на репозиторий Github приведена ниже.
Предоставление вам немного больше контекста…
Стэнфорд недавно выпустил Alpaca, новую языковую модель, основанную на инструкциях, которая была доработана из модели Meta LLaMA 7B. Альпака прошла обучение на 52 000 демонстраций выполнения инструкций, которые были созданы в стиле самообучения с использованием модели text-davinci-003. Результаты впечатляют: на оценочном наборе для самообучения Alpaca демонстрирует поведение, аналогичное text-davinci-003 OpenAI, при этом будучи заметно небольшим, простым в воспроизведении и экономически эффективным. Эти выводы могут открыть новые возможности для разработчиков, стремящихся использовать возможности больших языковых моделей в своих проектах, не нарушая бюджета и не жертвуя конфиденциальностью данных.
Вы можете узнать больше о рецепте обучения, результатах оценки и недостатках и т. д. модели на https://crfm.stanford.edu/2023/03/13/alpaca.html
Если вы посмотрите на приведенный выше блокнот, у вас будет почти весь код, необходимый для его запуска в google colab или на вашем локальном компьютере (при условии, что он имеет не менее 8 ГБ ОЗУ и 40 ГБ свободного места на жестком диске с GPU).
Блоки ключевых кодов представлены ниже
# Copies the repository in to your local machine !git clone https://github.com/tloen/alpaca-lora.git # Install the python dependencies & Torch Library !pip install -u pip !pip install -r requirements.txt !pip install torch==2.0.0 # Import libraries import torch from peft import PeftModel import transformers import textwrap from transformers import LlamaTokenizer, GenerationConfig, LlamaForCausalLM from transformers.generation.utils import GreedySearchDecoderOnlyOutput tokenizer = LlamaTokenizer.from_pretrained("decapoda-research/llama-7b-hf") model = LlamaForCausalLM.from_pretrained("decapoda-research/llama-7b-hf", load_in_8bit=True, device_map="auto") model = PeftModel.from_pretrained(model, "tloen/alpaca-lora-7b", torch_dtype=torch.float16) model = model.eval() model = torch.compile(model)
На данный момент вы довольно близки к запуску генеративных моделей НЛП на основе локальной/коллаборативной техники!.
Сценарий 1 — классификация
Хорошо, давайте определим здесь наш простой вариант использования в бизнесе. Вы являетесь страховой компанией и получили письмо от клиента по имени Шерлок Холмс с жалобой на то, что ему предложили меньше, чем он имел право на получение в соответствии с полисом. Предположим, вы хотите, чтобы эта конкретная почта была отнесена к гипотетическим классам.
1. Запрос страхового возмещения
2. Уведомление об отпуске
3. Пригласительное письмо
Текстовый шаблон классификации должен выглядеть примерно так, как показано ниже.
CLASSIFICATION__TEXT_TEMPLATE = f""" Below is the complete content of a document. Can you identify which category it is likely to be belonging to?. The possible categories are given below. 1. Insurance claim request 2. Leave of absense intimation 3. Invitation letter Write a response which identifies the document to any one of the above classes ### Content: From, Sherlock Holmes 221B Baker Street Date: 01/04/2023 To, General Insurance Company Lombard Street London United Kingdom Dear sir/madam; Re: Policy No - P-123-456-789 I am writing this letter in response to your letter on 30/03/2023, offering £400. to fix my claim. I don’t think that this is an appropriate sum. I request you to check out my case. If I do not get a reasonable offer, I will have no alternative but to refer my case to the Financial Ombudsman Service. I will review forward to get your offer within the following 14 days. Yours sincerely; Signature Sherlock Holmes ### Document Classs: """
Чтобы запустить генеративный код с помощью Alpaca, вам также необходимо запустить следующие части:
prompt = CLASSIFICATION_TEMPLATE encoding = tokenizer(prompt, return_tensors="pt" ) input_ids = encoding["input_ids"].to(DEVICE) generation_config = GenerationConfig(temperature=0.1, top_p=0.75, repetition_penalty=1.1) with torch.inference_mode(): output = model.generate(input_ids=input_ids, generation_config=generation_config, return_dict_in_generate=True, output_scores=True, max_new_tokens=256) response = tokenizer.decode(output.sequences[0]) print(response.split("### Document Classs:")[-1].strip())
Результат будет
Insurance claim Request
Вариант использования 2 — Извлечение информации
Предположим, что вы хотите извлечь адрес получателя из той же почты клиента. Вот как это сделать
QUERY_TEMPLATE = f""" Based on the letter contents provided below, can you identify the receiver address. ### Content: [Content] ### Response: """
Примените «QUERY_TEMPLATE» вместо «CLASSIFICATION_TEMPLATE» в приведенном выше коде. И получаешь ответ..
General Insurance Company Lombard Street London United Kingdom
Вариант использования 3 — написание ответа
Предположим, вы хотите написать ответ заявителю с указанием условий полиса и так далее. Вот как это сделать.
REPLY_TEMPLATE = f""" Based on the letter content provided below, can you Can you draft a reply to the sender?. ### Content: [Content] ### Response: """
Примените «REPLY_TEMPLATE» вместо «CLASSIFICATION_TEMPLATE» в приведенном выше коде. И получаешь ответ..
Dear Sherlock Holmes, Thank you for your email dated 01/04/2023 regarding your policy number P-123-456-789. We understand your concern and we are sorry for any inconvenience caused. We would like to inform you that our team has already assessed your claim and we believe that the amount of £400 offered to you is fair and reasonable. We hope that you accept this offer as it is the maximum amount we can provide under the terms of your insurance contract. If you wish to discuss further, please feel free to contact us at your earliest convenience. Best regards, [Name]
Каковы эти результаты для модели, работающей локально? Круто прямо. Это означает, что вы можете выполнять несколько задач NLP, используя одну модель LLM, установленную на вашем компьютере. Что ж, я сравнил результаты с ChatGPT, но результаты chatGPT лучше по очевидным причинам. Эй! у нас есть модель всего с 7B параметрами. А GPT 3.5 имеет 175 Б параметров!. Так что нечестно просто сравнивать оба, верно?
Заключение
В заключение, языковые модели Alpaca (LLM) предлагают многообещающую альтернативу для вариантов использования генеративной обработки естественного языка (NLP), особенно для тех, кто обеспокоен проблемами конфиденциальности данных. Как показано в статье, модели Alpaca, работающие локально, могут генерировать связный и осмысленный текст и могут быть точно настроены в соответствии с конкретными вариантами использования.
Однако важно отметить, что производительность LLM Alpaca по-прежнему уступает производительности более крупных моделей, таких как GPT-3.5, особенно с точки зрения их способности генерировать разнообразную и высококачественную продукцию. Поэтому перед принятием окончательного решения рекомендуется тщательно оценить требования конкретного варианта использования и рассмотреть как преимущества, так и ограничения каждой модели.
В целом, Alpaca LLM представляют собой многообещающее направление для будущего генеративного НЛП, и при дальнейшем развитии они могут предложить более конфиденциальное и экономичное решение для широкого спектра приложений.