Аннотация: Во время разработки модели часто возникает головная боль, когда точность не соответствует ожиданиям. Чтобы помочь пользователям решить проблему отладки и настройки модели, мы настроили компонент визуальной отладки и настройки для MindSpore: MindInsight.
Эта статья опубликована в сообществе HUAWEI CLOUD."Техническая галантерея | Точность и скорость оптимизации модели Хочу все! Практика настройки точности модели MindSpore (2)", оригинальный автор: HWCloudAI.
Введение: Во время разработки модели часто возникает головная боль, когда точность не соответствует ожиданиям. Чтобы помочь пользователям решить проблему отладки и настройки модели, мы настроили компонент визуальной отладки и настройки для MindSpore: MindInsight. Мы также отобрали руководства по отладке и настройке для распространенных проблем с точностью и поделимся ими в виде серии статей из серии «Практика настройки точности модели MindSpore», надеясь помочь пользователям легко обнаруживать проблемы с точностью и быстро оптимизировать точность модели. .
Ссылаясь на модуль Precision ModeSspore Precision Tuning Combat, нажмите на ссылку, чтобы прыгать →Технические галантереи | Более быстрая проблема с точностью позиционирования! Практика настройки точности модели MindSpore (1).
Эта статья является второй в серии обмена, который дастЧасто используемые идеи точной отладки и настройки. Эта серия сообщений предполагает, что ваш сценарий смог запуститься и рассчитать стоимость потерь. Если сценарий по-прежнему не запускается, обратитесь к соответствующему сообщению об ошибке, чтобы внести изменения.
При возникновении проблем с точностью общие идеи по отладке и настройке следующие:
1. Проверьте код и гиперпараметры
2. Проверьте структуру модели
3. Проверьте входные данные
4. Проверьте кривую потерь
5. Убедитесь, что точность соответствует ожидаемой.
Код является важным источником проблем с точностью. Проверка кода направлена на проверку скриптов и кодов и направлена на поиск проблем в источнике (раздел 2); структура модели отражает понимание кода MindSpore, а проверка структуры модели направлена на проверку Понимание MindSpore и согласованность конструкции инженера-алгоритма (раздел 3); некоторые проблемы не обнаруживаются до динамического процесса обучения, а проверка входных данных (раздел 4) и кривой потерь (раздел 5) точно соответствует коду и динамическому Явление обучения Объединение проверок, проверка того, является ли точность ожидаемой, означает пересмотр общего процесса настройки точности и рассмотрение методов настройки, таких как настройка гиперпараметров, моделей интерпретации и алгоритмов оптимизации (раздел 6). Кроме того, важно быть знакомым с моделями и инструментами (раздел 1). Эти идеи будут представлены отдельно ниже.
1. Подготовка к точной настройке
1.1 Просмотрите структуру алгоритма и всесторонне ознакомьтесь с моделью.
Перед настройкой точности сначала просмотрите структуру алгоритма.Убедитесь, что схема алгоритма понятна. Если вы обратитесь к документу для реализации модели, вам следует просмотреть все детали дизайна и выбор гиперпараметров в документе; если вы обратитесь к другим сценариям фреймворка для реализации модели, вы должны убедиться, что существует уникальный сценарий сравнительного анализа, который может соответствовать стандарты; если это недавно разработанный алгоритм, также следует определить важные детали дизайна и выбор гиперпараметров. Эта информация является важной основой для последующей проверки шагов скрипта.
Перед настройкой точности необходимо полностью ознакомиться с моделью. Только когда вы знакомы с моделью, вы можете точно понять информацию, предоставленную MindInsight.Определите, есть ли проблема,Найдите источник. Следовательно, важно потребоваться время, чтобы понять такие модели, как алгоритм и структуру модели, роль операторов в модели и значении параметров, а также характеристики оптимизатора, используемого в модели. Перед началом проанализировать детали проблемы точности, рекомендуется принести проблему с вами, чтобы углубить ваше понимание этих модельных элементов.
Прежде давайте сначала рассмотрим дизайн алгоритма.Убедитесь, что схема алгоритма понятна. Если вы обратитесь к документу для реализации модели, вам следует просмотреть все детали дизайна и выбор гиперпараметров в документе; если вы обратитесь к другим сценариям фреймворка для реализации модели, вы должны убедиться, что существует уникальный сценарий сравнительного анализа, который может соответствовать стандарты; если это недавно разработанный алгоритм, также должны быть определены важные детали дизайна и выбор гиперпараметров. Эта информация является важной основой для последующей проверки шагов скрипта.
Перед настройкой точности необходимо полностью ознакомиться с моделью. Только когда вы знакомы с моделью, вы можете точно понять информацию, предоставленную MindInsight.Определите, есть ли проблема,Найдите источник. Поэтому важно уделить время для понимания таких элементов модели, как алгоритм и структура модели, роль операторов в модели и значение параметров, а также характеристики оптимизатора, используемого в модели. Прежде чем приступить к подробному анализу проблемы точности, рекомендуется взять ее с собой, чтобы углубить свое понимание этих элементов модели.
1.2 Ознакомьтесь с инструментами
MindInsight богат функциями, пользователям рекомендуется просто прочитатьУчебное пособие по MindInsight, чтобы узнать об основных функциях. При возникновении проблем с точностью позиционирования рекомендуется включить функцию сбора сводной информации об обучении, добавить в скрипт SummaryCollector и использовать панель обучения для просмотра данных процесса обучения, как показано на следующем рисунке.Руководство пользователя по функции «Сводка»,Как использовать обучающую визуальную функцию.
Если вам нужно отладить модель онлайн, см.Включить функцию отладчика.
2. Проверьте код и гиперпараметры
Код является важным источником проблем с точностью. Проблемы с гиперпараметрами, проблемы со структурой модели, проблемы с данными, проблемы разработки и реализации алгоритма будут отражены в сценарии.Очень эффективное средство решения проблем с точностью позиционирования. Проверка кода в основном зависит от обхода кода, и рекомендуется использовать метод отладки маленькой желтой утки: в процессе обхода кода терпеливо объясняйте функцию каждой строки кода неопытному «маленькому желтому утёнку», чтобы вдохновлять вдохновение и находить проблемы с кодом. При проверке скрипта обратите внимание на то, чтобы его реализация (включая обработку данных, структуру модели, функцию потерь, оптимизатор и т. д.) соответствовала проекту. согласуется с другими сценариями Все несовместимо Каждое место должно иметь уважительную причину, иначе его следует изменить.
При проверке скрипта также следует обратить внимание на положение гиперпараметров.Проблема гиперпараметров в основном отражается в необоснованных значениях гиперпараметров, таких как
1. Установка скорости обучения необоснованна;
2. Параметр loss_scale необоснован;
3. Необоснованные параметры инициализации веса и т.д.
MINDInsight может помочь пользователям проверить супер-аргумент, в большинстве случаев SummaryCollector автоматически записывает общие супер-параметры, вы можете просмотреть супер-женьшень с помощью сведений о параметрах обучения MINDInsight (как показано ниже) и анализа прослеживаемости. В сочетании с кодом модели MINDINSIGHT отследите модуль анализа источника и код, вы можете подтвердить ценность супер-женьшеня, определить очевидный необоснованный супер-женьшень. Если тестовый сценарий, рекомендуется, чтобы иерархический сценарий был больше, чем значение суперпараметра.Если есть значение параметра по умолчанию, значение по умолчанию также следует сравнивать, чтобы избежать разных кадров параметра по умолчанию, что приводит к отклонению или обучению ошибки.
3. Проверьте структуру модели
С точки зрения структуры модели распространенными проблемами являются:
1. Неправильно используется оператор (используемый оператор не подходит для целевого сценария, например, следует использовать деление с плавающей запятой, а целочисленное деление используется неправильно);
2. Ошибка разделения веса (общие веса, которые не должны быть разделены);
3. Ошибка замораживания веса (замораживаются гири, которые не должны быть заморожены);
4. Узел подключен неправильно (не подключен блок, который должен быть подключен к расчетному графу);
5. Функция потерь неверна;
6. Неверный алгоритм оптимизатора (если оптимизатор реализован сам по себе) и т.д.
Рекомендуется проверить структуру модели, проверив код модели. Кроме того, MindInsight также может помочь пользователям проверить структуру модели. В большинстве случаев SummaryCollector автоматически записывает расчетный график, а с помощью MindInsight пользователи могутУдобный просмотр расчетных графиков. После запуска сценария модели рекомендуется использовать модуль визуализации графика расчета MindInsight, чтобы просмотреть структуру модели, углубить понимание графика расчета и убедиться, что структура модели соответствует ожиданиям. При наличии сценария сравнительного анализа вы также можете сравнить график расчета со сценарием сравнительного анализа, чтобы проверить, есть ли важные различия между графиком расчета текущего сценария и сценария сравнительного анализа.
Учитывая сложность структур модели в целом, нереально ожидать, что все проблемы со структурой модели будут обнаружены на этом этапе. Пока понимание вычислительного графа углубляется через визуализированную структуру модели, могут быть обнаружены очевидные структурные проблемы. В следующих шагах мы вернемся к этому шагу, чтобы перепроверить и подтвердить после обнаружения более четкой проблемы с точностью.
Примечание 1. MindInsight поддерживает просмотр диаграммы вычислений, записанной с помощью SummaryCollector, и диаграммы вычислений файла pb, экспортированного с помощью параметра save_graphs контекста MindSpore. Пожалуйста, обратитесь к разделу «Визуализация вычислительного графика» в нашем руководстве, чтобы понятьДополнительная информация.
Примечание 2. Инструмент переноса сценариев может преобразовывать модели, написанные в средах PyTorch и TensorFlow, в сценарии MindSpore. Чтобы узнать больше, посетите руководство.Дополнительная информация.
4. Проверьте входные данные
Изучив ввод данных в модель, их можно объединить со сценарием, чтобы определить, есть ли проблема с конвейером обработки данных и набором данных. Распространенные проблемы с вводом данных:
1. Слишком много пропущенных значений в данных;
2. Количество образцов в каждой категории не сбалансировано;
3. В данных есть выбросы;
4. Ошибка метки данных;
5. Недостаточное количество обучающих выборок;
6. Данные не стандартизированы, а данные, введенные в модель, находятся не в правильном диапазоне;
7. Методы обработки данных Finetune и Pretrain различны;
8. Методы обработки данных на этапе обучения и на этапе вывода различаются;
9. Неверные параметры обработки данных и т.д.
MindInsight может помочь пользователям в проверке входных данных и конвейеров обработки данных. В большинстве случаев SummaryCollector автоматически записывает ввод данных в модель (данные после обработки данных) и параметры конвейера обработки данных. Ввод данных в модель будет отображаться в модуле «Выборка данных», а параметры конвейера обработки данных — в модуле «График данных» и модуле «Прослеживаемость данных». С помощью модуля выборки данных MindInsight можно исследовать данные (обработанные конвейером обработки данных) входной модели. Если данные явно не соответствуют ожиданиям (например, слишком большой диапазон обрезаемых данных, слишком большой угол поворота данных и т. д.), можно судить о наличии определенной проблемы с входными данными. С помощью графика данных MindInsight и модуля отслеживания данных вы можете проверить процесс обработки данных и конкретные значения параметров конвейера обработки данных, чтобыОбнаружены необоснованные методы обработки данных.
Если имеется сценарий сравнительного анализа, вы также можете сравнить его со сценарием сравнительного анализа, чтобы проверить, совпадают ли данные, выводимые конвейером обработки данных, с данными текущего сценария. Например, сохраните выходные данные конвейера обработки данных в виде файла npy, а затем используйте метод numpy.allclose() для сравнения данных тестового сценария и текущего сценария. Если обнаружится, что он отличается, может возникнуть проблема с точностью на этапе обработки данных.
Если в конвейере обработки данных не обнаружено никаких проблем, вы можете вручную проверить, есть ли в наборе данных такие проблемы, как несбалансированная классификация, неправильное сопоставление меток, слишком много пропущенных значений и недостаточное количество обучающих выборок.
5. Проверьте кривую потерь
Во время обучения сети может быть обнаружено много проблем с точностью.Обычные проблемы или явления включают в себя:
1. Инициализация веса необоснована (например, начальное значение равно 0, диапазон начального значения неразумно и т. Д.);
2. В весе слишком большие и слишком маленькие значения;
3. Слишком сильно меняется вес;
4. Неправильная заморозка веса;
5. Неправильное распределение веса;
6. Значение активации насыщено или слишком слабое (например, вывод Sigmoid близок к 1, а вывод Relu — все 0);
7. Градиент взрывается и исчезает;
8. Недостаточная тренировочная эпоха;
9. Результат вычисления оператора существует в NAN и INF;
10. Переполнение в процессе вычисления оператора (переполнение в процессе вычисления не обязательно вредно) и т.д.
Некоторые из вышеперечисленных проблем или явлений могут проявляться через потери, а другие трудно наблюдать. MindInsight предоставляет целевые функции для наблюдения за вышеуказанными явлениями и автоматической проверки на наличие проблем, помогая вам быстрее найти основную причину проблемы. Например:
-
Модуль диаграммы распределения параметров MindInsight может отображать тенденцию изменения весов моделей в процессе обучения;
-
Модуль визуализации тензоров MindInsight может отображать конкретные значения тензоров и сравнивать разные тензоры;
-
Отладчик MindInsight имеет встроенные богатые и мощные возможности проверки, которые могут проверять проблемы с весом (такие как вес не обновляется, слишком большое обновление веса, слишком большое/слишком маленькое значение веса), проблемы с градиентом (такие как исчезновение градиента, взрыв градиента), Проблемы со значением активации (такие как насыщение значения активации или слишком слабое), тензоры равны 0, NAN/INF, переполнение процесса вычисления оператора и другие проблемы.
В большинстве случаев SummaryCollector автоматически записывает кривую потерь модели, которую можно просмотреть с помощью модуля скалярной визуализации MindInsight. Кривая потерь может отражать динамическую тенденцию обучения сети.Наблюдая за кривой потерь, вы можетеПолучить, сходится ли модель,Является ли это переоснащением и т. д..
В большинстве случаев SummaryCollector автоматически записывает изменения параметров модели (по умолчанию записывается 5 параметров), которые можно просмотреть с помощью модуля диаграммы распределения параметров MindInsight. Если вы хотите записать графики распределения параметров для большего количества параметров,Пожалуйста, обратитесь к гистограмму_регулярного параметра SummaryCollector,илиОбратитесь к оператору HistogramSummary.
Тензоры автоматически не записываются. Если вы хотите просмотреть конкретные значения тензоров через MindInsight, используйтеОператор TensorSummary.
Далее представлена идея использования MindInsight для обнаружения проблем с точностью на основе общих явлений кривых потерь.
5.1 потеря убежать
Выход из-под контроля потерь означает, что в потерях появляется NAN, +/-INF или особо большое значение. Убегание потерь обычно означает, что есть проблема с дизайном или реализацией алгоритма. Идея позиционирования следующая:
1. Просмотрите сценарии, структуру модели и данные
1) Проверьте, не имеют ли гиперпараметры необоснованно большие/малые значения,
2) Проверьте, правильно ли реализована структура модели, особенно правильно ли реализована функция потерь,
3) Проверить, есть ли во входных данных пропущенные значения, и есть ли особо большие/маленькие значения.
2. Посмотрите на график распределения параметров на панели обучения и проверьте, нет ли явных отклонений в обновлении параметров. Если обнаружено ненормальное обновление параметра, вы можете использовать отладчик, чтобы найти причину ненормального обновления параметра. 3. Используйте модуль отладчика для проверки учебного сайта.
1) Если в значении потерь появляются NAN и +/-INF, вы можете использовать условие «Проверить переполнение тензора», чтобы добавить глобальную точку мониторинга, найти узел оператора, где NAN и +/-INF появляются первыми, и проверить, входные данные оператора вызовут вычислительные исключения (например, деление на ноль). Если есть проблема с входными данными оператора, десятичное значение эпсилон может быть добавлено целенаправленно, чтобы избежать неправильных вычислений.
2) Если значение потерь имеет особенно большое значение, вы можете использовать условие «Проверить чрезмерный тензор», чтобы добавить глобальную точку мониторинга, сначала найти узел оператора с большим значением и проверить, не вызовут ли входные данные оператора ненормальный расчет. Если сами входные данные являются ненормальными, оператор, генерирующий входные данные, может продолжать отслеживаться до тех пор, пока не будет обнаружена конкретная причина.
3) Если есть подозрение, что в обновлении параметров, градиенте и т. д. есть аномалия, можно использовать такие условия, как «проверка изменения веса слишком велика», «проверка исчезновения градиента», «проверка градиента». слишком большой» и другие условия для установки точек мониторинга, обнаружения аномального веса или градиента, а затем в сочетании с просмотром тензорной проверки подозрительные прямые операторы, обратные операторы, операторы оптимизатора и т. д. проверяются слой за слоем.
5.2 Сходимость потерь происходит медленно
Медленная сходимость потерь означает, что потери колеблются, а скорость сходимости медленная, и требуется много времени, чтобы достичь ожидаемого значения, или, наконец, не удается сходиться к ожидаемому значению. По сравнению с неконтролируемыми потерями числовая характеристика медленной сходимости потерь не очевидна, и ее труднее обнаружить. Идея позиционирования следующая:
1. Просмотрите сценарии, структуру модели и данные
1) Проверьте, имеют ли гиперпараметры необоснованно большие/маленькие значения, особенно если скорость обучения установлена слишком маленькой или слишком большой.Если скорость обучения установлена слишком маленькой, скорость сходимости будет низкой, а если скорость обучения установлена слишком большой, это приведет к потере Вибрация, а не падение;
2) Проверить, правильно ли реализована структура модели, особенно правильно ли реализованы функция потерь и оптимизатор;
3) Проверьте, является ли диапазон входных данных нормальным, особенно, если значение входных данных слишком мало.
2. Посмотрите на график распределения параметров на панели обучения и проверьте, нет ли явных отклонений в обновлении параметров. Если обнаружено ненормальное обновление параметра, вы можете использовать отладчик, чтобы найти причину ненормального обновления параметра. 3. Используйте модуль отладчика, чтобы проверить ход обучающей сцены.
1) Обучаемые (нефиксированные) веса можно контролировать, используя условия «Проверить, слишком ли малы изменения веса» и «Проверить неизменные веса», чтобы проверить, не слишком ли малы изменения веса. Если обнаружится, что изменение веса слишком мало, вы можете дополнительно проверить, не слишком ли мало значение скорости обучения, правильно ли реализован алгоритм оптимизатора, исчез ли градиент, и произвести целенаправленный ремонт.
2) Градиент можно контролировать с помощью условия «Проверить исчезновение градиента», чтобы проверить, исчезает ли градиент. Если вы обнаружите, что градиент исчезает, вы можете дополнительно проверить причину исчезновения градиента. Например, условие «Проверить диапазон значений активации» может проверять наличие таких проблем, как насыщение значения активации, выход Relu, равный 0, и т. д.
5.3 Другие явления потерь
Если потери в тренировочном наборе равны 0, это обычно означает, что модель переоснащена.Попробуйте увеличить размер тренировочного набора.
6. Проверьте, соответствует ли точность ожиданиям
MindInsight может записывать результаты точности каждой тренировки для пользователя. При использовании одного и того же экземпляра SummaryCollector в model.train и model.eval информация об оценке модели (метрики) автоматически регистрируется. После обучения вы можете использовать модуль отслеживания моделей MindInsight, чтобы проверить, соответствует ли точность результатов обучения стандарту.
6.1 Проверка точности на тренировочном наборе
Если значение потерь и значение метрики модели на тренировочном наборе не соответствуют ожиданиям, вы можете обратиться к следующим идеям по позиционированию и оптимизации:
1. Просмотрите код, структуру модели, входные данные и кривую потерь.
1) Проверьте скрипт, чтобы проверить, имеют ли гиперпараметры необоснованные значения.
2) Проверьте, правильно ли реализована структура модели.
3) Проверьте правильность введенных данных.
4) Проверьте, нет ли каких-либо отклонений от нормы в результате сходимости и тренде сходимости кривой потерь.
2. Попробуйте оптимизировать гиперпараметры с помощью функции анализа прослеживаемости MindInsight. На странице анализа прослеживаемости будет проанализирована важность гиперпараметров. Пользователи должны отдавать приоритет настройке гиперпараметров с высокой важностью. Связь между гиперпараметрами и целями оптимизации можно наблюдать на диаграмме рассеяния, чтобы целенаправленно корректировать значение гиперпараметров. .
3. Попробуйте использовать MindInsight Tuner для оптимизации гиперпараметров. Обратите внимание, что поиск гиперпараметра выполняется настройщиком параметров путем выполнения нескольких полных тренировок, что занимает в несколько раз больше времени, чем время обучения сети.Если сети требуется много времени для обучения, поиск гиперпараметра займет много времени . . .Учебное пособие по настройке параметров. Попробуйте оптимизировать свои модели и наборы данных с помощью функции интерпретации моделей MindInsight. Функция интерпретации модели может визуализировать области, наиболее важные для результатов классификации, с помощью карты значимости, а также может указывать, какие типы меток следует оптимизировать, с помощью системы оценки.
Учебное пособие по интерпретации модели
4. Попробуйте оптимизировать структуру/алгоритм модели.
6.2 Проверка точности на проверочном наборе
Если ни точность обучающего набора, ни точность проверочного набора не соответствуют ожиданиям, следует сначала проверить точность обучающего набора, обратившись к предыдущему разделу. Если точность обучающего набора оправдала ожидания, но точность проверочного набора не оправдала ожиданий, существует высокая вероятность того, что модель переоснащена.Идеи обработки заключаются в следующем:
1. Проверьте логику оценки сценария оценки набора проверки на наличие ошибок. В частности, согласуется ли метод обработки данных с обучающим набором, неверен ли алгоритм вывода и загружена ли правильная контрольная точка модели.
2. Увеличьте объем данных. Включая увеличение размера выборки, выполнение аугментации и возмущения данных и т. д.
3. Регуляризация. Общие методы, такие как штраф за норму параметра (например, добавление члена регуляризации к целевой функции), совместное использование параметров (принуждение обоих компонентов модели к совместному использованию одних и тех же значений параметров), досрочное прекращение обучения и т. д.
4. Соответствующим образом уменьшите размер модели. Например, уменьшение количества сверточных слоев и т.д.
6.3 Проверка точности на тестовом наборе
Если ни проверочный набор, ни точность тестового набора не соответствуют ожидаемым, вам следует сначала обратиться к предыдущему разделу, чтобы проверить точность проверочного набора. Если точность проверочного набора оправдала ожидания, но точность тестового набора не оправдала ожиданий, учитывая, что данные в тестовом наборе — это новые данные, которые модель никогда раньше не видела, причина обычно заключается в том, что распределение данных тестового набора несовместимо с распределением данных обучающего набора. Идея обработки следующая:
1. Проверьте логику оценки сценария оценки набора тестов на наличие ошибок. В частности, согласуется ли метод обработки данных с обучающим набором, неверен ли алгоритм вывода и загружена ли правильная контрольная точка модели.
2. Проверьте качество данных в тестовом наборе, например, существенно ли отличается распределение данных от обучающего набора, и нет ли в данных большого количества шума, пропущенных значений или выбросов.
7. Резюме
Поскольку существует несколько возможных причин одного и того же явления, локализация проблем с точностью очень сильно зависит от опыта экспертов. Я надеюсь, что описанные выше методы и функции позиционирования могут сыграть хорошую направляющую роль и помочь вам накопить успешный опыт и стать мастером точной настройки.
Нажмите «Подписаться», чтобы впервые узнать о новых технологиях HUAWEI CLOUD~