Точная настройка, переобучение и не только развитие с индивидуальными программами обучения на программе Магистр права’.

План развития с точной настройкой, переобучением и индивидуальными программами обучения на программе Магистр права

Введение

Я уверен, что большинство из вас уже использовали ChatGPT. Это замечательно, потому что вы сделали первый шаг в путешествии, которое мы собираемся начать в этой статье! Когда речь идет о овладении какой-либо новой технологией, первое, что вы делаете, – это использовать ее. Это похоже на то, как научиться плавать, прыгнув в воду! 🏊‍♂️

Если вы хотите изучить GenAI, выберите проблему реального мира и начните создавать приложение для ее решения. В центре всего, что связано с GenAI, находится большая языковая модель (LLM), которую некоторые люди называют базовой моделью (FM).

Вы могли слышать о потребителях модели, настройщиках и разработчиках. Но подождите, мы собираемся провести более детальное разбиение.

McKinsey рассматривает это как потребителей, формирующих и создающих, что они упомянули в своем заседании по GenAI Recognise.

Мы рассмотрим каждый из этих уровней более подробно в этой статье.

Распространение платформ в качестве использования

Чтобы углубиться в эту тему еще больше, обратимся к реальному примеру, который разъяснит все кристально ясно. В сегодняшнем техническом ландшафте предполагается, что большинство приложений должны работать на нескольких платформах. Однако есть один нюанс: каждая платформа имеет собственный уникальный интерфейс и особенности. Расширение поддержки приложения для дополнительных платформ и поддержка таких многоплатформенных приложений одинаково сложны.

Но именно здесь GenAI вмешивается, чтобы спасти ситуацию. Он дает нам возможность создать универсальный и удобный интерфейс для наших приложений, независимо от платформ, которым они служат. Волшебный ингредиент? Большие языковые модели (LLMs) превращают этот интерфейс в естественный и интуитивный язык.

Команды Linux, Windows, Mac

Чтобы сделать это еще более конкретным и понятным, предположим, что нам нужно знать точную команду для различных сценариев на нашей машине, которая может быть Linux, Windows или Mac. Следующая диаграмма иллюстрирует один сценарий:

Ценность для конечного пользователя и разработчика приложения

Как конечный пользователь, вам не нужно знать команды для каждой из этих платформ, и вы можете выполнять свои дела естественным и интуитивным образом. Как разработчик приложения, вам не нужно явно переводить каждый интерфейс приложения с пользователем для каждой из поддерживаемых платформ.

Архитектура ссылки

В облаке находятся несколько LLM, включая GPT3, GPT3.5 и GPT4, которые предоставляются различными провайдерами, такими как Open AI и Azure Open AI. Они становятся легко доступными благодаря различным API, таким как completion, chat completion и т. д.

AI-оркестраторы делают доступ к ним еще более безупречным и единообразным для всех моделей и провайдеров. Именно поэтому современные приложения GenAI обычно взаимодействуют с AI-оркестраторами, а не напрямую с подлежащими провайдерами и моделями. Он затем обрабатывает оркестрацию с настраиваемыми и/или возможно несколькими подлежащими провайдерами и моделями, необходимыми для приложения.

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

Наконец, у приложения есть соединитель(и), чтобы взаимодействовать с платформами, которые оно хочет поддерживать, для выполнения команд, созданных GenAI.

Ссылочные технологии

  • AI-оркестраторы: LangChain, Semantic Kernel
  • Cloud-модели: Azure Open AI

Конфигурация

В самой конфигурации есть множество настроек, которые вы можете настроить для достижения желаемых результатов. Вот типичный config.json из плагина семантического ядра:

{  "schema": 1,  "description": "Мое приложение",  "type": "завершение",  "completion": {    "max_tokens": 300,    "temperature": 0.0,    "top_p": 0.0,    "presence_penalty": 0.0,    "frequency_penalty": 0.0,    "stop_sequences": [        "++++++"    ]  },  "input": {    "parameters": [      {        "name": "input",        "description": "Сценарий выполнения команд",        "defaultValue": ""      }    ]  }}

‘type’ указывает тип API, который вы хотите выполнить на основной LLM. Здесь мы используем API «completion». «temperature» определяет изменчивость или креативность модели. Например, во время общения вы можете хотеть, чтобы ИИ отвечал разными фразами в разное время, хотя все они могут передавать одно и то же намерение, чтобы поддерживать энергичный диалог. Однако здесь мы всегда хотим получить одинаковый точный ответ. Поэтому мы используем значение 0. Ваш результат может состоять из разных разделов с предопределенными разделителями, и если вы хотите, чтобы только первый раздел, как в нашем случае точно совпадающей команды, был выведен в качестве ответа, вы можете использовать «stop_sequences» как здесь. Вы определяете свой вход со всеми параметрами, в данном случае только одним.

Инженерия запроса

Теперь давайте поговорим о так называемой инженерии запроса и о том, как мы можем этим воспользоваться.

Системные сообщения

Системные сообщения сообщают модели, как именно мы хотим, чтобы она себя вела. Например, у нас может быть что-то подобное следующему в начале файла skprompt.txt в плагине Linux bash:

Вы являетесь полезным помощником, создающим команды для машин Linux bash на основе пользовательского ввода. Ваш ответ должен содержать ТОЛЬКО команду и НЕ должен содержать объяснений. Для всего пользовательского ввода вы будете генерировать ответ, учитывая команды Linux bash, чтобы найти его решение.

Что определяет его системное сообщение.

Несколько примеров и помощь

Это помогает модели давать точный ответ, если вы даете ей некоторые примеры вопросов и соответствующих ответов, которые вы ищете. Это также называется несколькими примерами. Например, наш плагин Linux bash может иметь что-то подобное следующему в своем файле skprompt.txt после упомянутого выше системного сообщения:

Примеры

Пользователь: Получить мой IPAssistant: curl ifconfig.me++++++Пользователь: Получить погоду в Сан-ФранцискоAssistant: curl wttr.in/SanFrancisco++++++Пользователь:"{{$input}}"Assistant:

Вы можете настроить свою систему так, чтобы выбрать правильные примеры/варианты, которые вы хотите получить в качестве результата.

Организация ИИ

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

import openaiimport osimport argparseimport semantic_kernel as skfrom semantic_kernel.connectors.ai.open_ai import AzureTextCompletionparser = argparse.ArgumentParser(description='GANC')parser.add_argument('platform', type=str,                    help='A platform needs to be specified')parser.add_argument('--verbose', action='store_true',                    help='is verbose')args = parser.parse_args()kernel = sk.Kernel()deployment, api_key, endpoint = sk.azure_openai_settings_from_dot_env()kernel.add_text_completion_service("dv", AzureTextCompletion(deployment, endpoint, api_key))platformFunctions = kernel.import_semantic_skill_from_directory("./", "platform_commands")platformFunction = platformFunctions[args.platform]user_query = input()response = platformFunction(user_query)print (respone)

Этот Python-скрипт принимает «platform» как обязательный аргумент. Он выбирает правильный плагин из папки «platform_commands» для указанной платформы. Затем он берет запрос пользователя, вызывает функцию и возвращает ответ.

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

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

Настройка

Настройка включает обновление весов предварительно обученной языковой модели для новой задачи и набора данных. Она обычно используется для передачи обучения, настройки и специализации на домен. Существует несколько инструментов и техник для этого. Один из способов сделать это – использовать инструменты командной строки OpenAI. Вы можете предоставить ему свои данные и создать данные для обучения с помощью команд, например:

openai tools fine_tunes.prepare_data -f <LOCAL_FILE>

Затем вы можете создать специальную модель с помощью Azure AI Studio:

Предоставление настроенных ранее данных для совершенствования.

Пользовательские LLM

Если вы достаточно смелы, чтобы углубиться и продолжить эксперименты, читайте дальше! Мы рассмотрим, как создавать наши собственные модели.

Переобучение

Это очень похоже на ранее рассмотренное тонкое настраивание. Вот как мы можем сделать это с помощью transformers:

from transformers import AutoTokenizer# Подготовьте свой токенизатор данныхtokenizer = AutoTokenizer.from_pretrained("bert-base-cased")def tokenize_function(examples):    return tokenizer(examples["text"], padding="max_length", truncation=True)# предположим, что мой набор данных загружен в my_datasettokenized_datasets = my_dataset.map(tokenize_function, batched=True)# загрузите свою модельfrom transformers import AutoModelForSequenceClassificationmodel = AutoModelForSequenceClassification.from_pretrained("bert-base-cased", num_labels=5)# Обучениеfrom transformers import TrainingArguments, Trainertraining_args = TrainingArguments(output_dir="mydir")trainer.train()# сохраните модель, которую можно загрузить, указав сохраненный каталог, и использовать позжеtrainer.save_model()

Обучение с нуля

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

Совершенно новые модели

Вы можете определить структуру своей модели, потенциально улучшив существующие модели, а затем следовать описанному выше процессу. В эту категорию входят Titan от Amazon и Codewhisperer.

Заключение

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

Основные выводы:

  • Как вы можете видеть, GenAI очень увлекательный и позволяет решать несколько задач.
  • Мы рассмотрели один из таких случаев использования и посмотрели, как мы могли бы быстро начать создавать решение.
  • Некоторые задаются вопросом, не является ли GenAI пустым пузырем. Вы можете выбрать ваш любимый случай использования и попробовать сами, следуя шагам, описанным в этой статье, чтобы ответить на этот вопрос сами!
  • Процесс может быстро становиться сложным и трудоемким, когда вы начинаете заниматься такими вещами, как настройка моделей, обучение и создание.

Часто задаваемые вопросы

Показанные в этой статье материалы не принадлежат Analytics Vidhya и используются с усмотрением автора.