воскресенье, 27 августа 2023 г.

Генеративный ИИ в деле программирования

Исследование McKinsey показывает, что разработчики программного обеспечения могут выполнять задачи кодирования в два раза быстрее с помощью генеративного ИИ:
  • Документирование кода. +45-50% за счет ИИ.
  • Генерация кода. +35-45% за счет ИИ.
  • Рефакторинг кода. +20-30% за счет ИИ.
  • Задачи высокой сложности. Менее 10% за счет ИИ.
Хотя значительный рост производительности возможен, экономия времени может значительно варьироваться в зависимости от сложности задачи и опыта разработчика.

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

Где великолепен генеративный ИИ


Эксперименты с использованием генеративного ИИ показали повышение производительности в четырех ключевых областях:
  • Ускорение ручной и повторяющейся работы. Генеративный ИИ может выполнять рутинные задачи, такие как автоматическое выполнение стандартных функций, используемых при кодировании, заполнение операторов кодирования по мере ввода разработчиком и документирование функций кода в стандартном формате на основе запроса разработчика. При этом ИИ-инструменты освобождают разработчика от рутинных задач и позволяют разработчикам решать более сложные бизнес-задачи и быстро внедрять новые программные возможности.
  • Быстрое создание первого чернового кода. Столкнувшись с пустым экраном, разработчики с генеративными инструментами на основе ИИ могут запросить создать прототип приложения, введя запрос в отдельном окне или в интегрированной среде разработки (IDE). Генеративные инструменты на основе ИИ могут предоставить полезные предложения по коду. Это позволит разработчикам быстрее приступить к работе.
  • Ускорение обновления существующего кода. Инструменты ИИ позволяют быстрее вносить изменения в существующий код.
  • Повышение способностей разработчиков решать новые задачи. Технология ИИ может помочь разработчикам быстро освежить незнакомую кодовую базу, язык или структуру, что необходимо для выполнения работ. Когда разработчики сталкиваются с новой задачей, они могут обратиться к инструментам ИИ за помощью, которую они в противном случае могли бы получить от опытного коллеги. Такая помощь может состоять в объяснении новых концепций, в синтезе необходимой информации. Они могут, например, позволить сопоставлять код из разных репозиториев, могут предоставлять пошаговые руководства по использованию фреймворка.

Какие задачи требуют экспертизы разработчика


Технология генеративного ИИ может многое, но качество инструментов зависит от навыков использующих их инженеров. Три области, в которых человеческий участие и контроль имеют решающее значение:
  • Проверка кода на наличие ошибок. Иногда ИИ-инструменты ИИ дают неправильные рекомендации по кодированию и даже вносят ошибки в код. Разработчику в этом случае корректировать ИИ, вводя многочисленные подсказки.
  • Влияние организационного контекста. Хотя готовые генеративные инструменты на основе ИИ многое знают о кодировании, им неизвестны конкретные потребности проекта и организации. Такие знания важны при написании кода, чтобы обеспечить беспрепятственную интеграцию конечного программного продукта с другими приложениями, обеспечить соответствие требованиям компании к производительности и безопасности и, в конечном счете, важны для удовлетворения потребностей конечных пользователей. Разработчики программного обеспечения должны предоставить контекст ИИ-инструментам с помощью подсказок, включая то, как код будет использоваться и кем, какие типы интерфейсов и другие системы будут взаимодействовать с программным обеспечением, используемые данные и многое другое.
  • Комплексные требования к кодированию. Генеративные инструменты на основе ИИ лучше подходят для ответов на простые запросы, такие как оптимизация фрагмента кода. Но сложные вопросы, такие как объединение нескольких фреймворков с разрозненной логикой кода требуют участия разработчиков.

Значение ИИ-инструментов для технологических лидеров?


Как технологическим лидерам добиться прироста производительности при минимизации рисков в разработке программного обеспечения при использовании генеративного ИИ? Предлагается начать с четырех вопросов:
  • развитие навыков,
  • выполнение расширенных вариантов использования,
  • планирование смены навыков,
  • управление рисками.

Обучение и инструктаж разработчиков использованию генеративного ИИ


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

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

После того, как разработчики начнут использовать инструменты в своей повседневной деятельности, развитие их навыков должно продолжаться за счет постоянного обучения, создания сообщества, специальных онлайн-каналов и групповых встреч для обмена опыта.

Добивайтесь использования передовых практик использования инструментов генеративного ИИ


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

Развертывание новых вариантов использования ИИ требует тщательной оценки инструментов, поскольку на рынок выходит множество генеративных инструментов ИИ, и разные инструменты превосходны в разных областях. Использование нескольких инструментов может быть более выгодным, чем использование одного.

Планируйте смену навыков


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

Контролируйте риски


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

Заключение


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

Источник


Unleashing developer productivity with generative AI. Begum Karaci Deniz, Chandra Gnanasambandam, Martin Harrysson, Alharith Hussin, and Shivam Srivastava.  June 27, 2023
https://www.mckinsey.com/capabilities/mckinsey-digital/our-insights/unleashing-developer-productivity-with-generative-ai

Повышение производительности разработчиков с помощью генеративного ИИ. Бегум Карачи Дениз, Чандра Гнанасамбандам, Мартин Харриссон, Алхарит Хуссин и Шивам. 27 июня 2023 г.

Термины


Генеративный ИИ
— это тип ИИ, который может создавать новый контент (текст, код, изображения, видео), используя шаблоны, которые он изучил, обучаясь на обширных (общедоступных) данных с помощью методов машинного обучения (ML).

Базовые модели (FM) — это модели глубокого обучения, обученные на огромном количестве неструктурированных, немаркированных данных, которые можно использовать для широкого круга задач или адаптировать к конкретным задачам путем тонкой настройки. Примерами таких моделей являются GPT-4, PaLM 2, DALL·E 2 и Stable Diffusion.

Большие языковые модели (LLM) составляют класс базовых моделей, которые могут обрабатывать огромные объемы неструктурированного текста и изучать отношения между словами или частями слов, известные как токены. Это позволяет LLM генерировать текст на естественном языке, выполняя такие задачи, как обобщение или извлечение знаний. Cohere Command — это один из типов LLM; LaMDA является LLM позади Барда.

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

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

Комментариев нет:

Отправить комментарий