Отпечатки

Доступность WebNN, backend и конфиденциальность

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

Документация

Нужна структурированная документация по теме Отпечатки?

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

WebNN - это веб-API для представления вычислений машинного обучения в виде графов, которые выполняет браузер. Оно позволяет запускать вывод локально и не полагаться полностью на удалённый сервис. Доступность зависит от реализации, поэтому приложению нужен запасной путь; наличие API не гарантирует скорость или конкретное оборудование.

Что представляет WebNN

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

WebNN не предназначен для графического рендеринга. Вычисления и рендеринг графики рассматриваются в статье WebGPU и конфиденциальность браузера. Наличие одного API не означает доступность другого.

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

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

Доступность и варианты выполнения

Поддержка зависит от зрелости реализации, канала выпуска, операционной системы, оборудования и конфигурации. Браузер может предоставить только часть ожидаемых функций или не предоставить API вовсе. Спецификация позволяет отдельно запрашивать поддержку операторов через opSupportLimits() и не раскрывает выбранное устройство (запрос поддержки, соображения конфиденциальности); наличие API не показывает, какой механизм выполняет граф.

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

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

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

Вопросы конфиденциальности

Локальный вывод может уменьшить необходимость отправлять некоторые входные данные сервису, но сам по себе не делает приложение конфиденциальным. Приложение по-прежнему управляет тем, что хранится, передаётся и записывается в журналы. Страница также может узнать о доступности функции. Используйте этот ответ для выбора функционального пути, а не как идентификатор пользователя или утверждение об оборудовании. Локальные вычисления не описывают сетевое поведение остального приложения; при проверке потока данных отдельно выясните, отправляет ли оно исходные данные, результаты или телеметрию (соображения конфиденциальности W3C). Утверждение W3C о конфиденциальности относится к обработке входных данных самим WebNN. Самостоятельная отправка данных приложением является отдельным потоком данных.

Связывайте проверки возможностей с потребностью пользователя, запрашивайте только необходимую информацию и проверяйте телеметрию до записи. Конфиденциальность определяется полным потоком данных, а не только местом вычислений: локальный граф может оставить вход на устройстве, но приложение все равно способно сохранить исходное изображение, кешировать модель, экспортировать результат или отправить отчет об ошибке. Удаленная альтернатива может требовать загрузки данных, аккаунта и иных правил хранения; объясните это до передачи данных. Для поддержки предпочитайте краткий итог, функция доступна, выбран запасной путь или задача не завершена, вместо полного объекта возможностей. Входные данные могут содержать лица, голоса или документы и требуют отдельных правил доступа и удаления. Решение браузера о выполнении не отвечает на эти продуктовые вопросы.

Проверка совместимости

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

Управление изменениями выпуска

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

Проверка выпуска браузера помогает сравнивать версии. Зрелость и поверхность WebNN могут меняться отдельно от поддержки WebGPU. Для кандидата выпуска проверяйте поддерживаемую сборку браузера и ревизию модели на тех же фикстурах, включая обновление кешированной модели. Различайте недоступный интерфейс, неприемлемый результат и незавершенный запуск: для них нужны разные действия, например альтернативный путь, изменение модели или сборки либо восстановимая отмена.

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

При исследовании изменения по возможности меняйте только один вход версии за раз. Сначала сравните обновление только браузера с той же моделью и предобработкой, затем отдельно проверьте модель на известной сборке.

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

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

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

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

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

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

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

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

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

Для эксплуатации и поддержки сохраняйте только нужные для воспроизведения версии браузера и семейства ОС, версии приложения и модели, требования графа, класс входа, этап сбоя и ожидаемый и видимый результаты. Предпочитайте код результата и синтетическую фикстуру исходным изображениям, записям, документам и полным объектам графа. Запишите, выбрал ли пользователь локальную обработку или сервисный путь, и удаляйте временные фикстуры и диагностику после закрытия обращения. Укажите срок хранения и сообщите пользователю, какие поля собираются, когда он решает отправить отчет. Если нужен исходный файл, запросите его через отдельное согласие и отдельные средства удаления в процессе поддержки. Сравнивайте завершенные, запасные, отмененные и незавершенные задачи между версиями без создания постоянного профиля браузера. Если изменение затронуло только необязательную функцию, остальные части страницы должны оставаться рабочими; объясните, какая задача затронута.

Пересматривайте приватность при изменении потока данных или поведения модели. Локальный инференс указывает место запуска графа, но не то, хранит или передает ли приложение исходные данные, результаты или телеметрию. Проверяйте эти потоки отдельно: выбранное изображение может быть сохранено локально, результат экспортирован, а диагностика отправлена даже при локальном запуске графа. Не связывайте подробные объекты возможностей с идентификаторами аккаунта, если достаточно агрегированного результата. Разделяйте данные для работы функции и поддержки: инференсу может требоваться кратковременный ввод, а телеметрии, лишь факт завершения, перехода на альтернативу или отмены. Диагностику отправляют по выбору пользователя; ограничьте ее воспроизведением задачи, укажите назначение и срок хранения, предусмотрите удаление записей, кешированных моделей и временных результатов. Для воспроизводимости связывайте версии браузера, приложения и модели с предобработкой, постобработкой, сбросом кеша, обработкой входа и экспортом, если задача зависит от их сочетания. При изменении одного слоя проверяйте его отдельно. Раздельно оценивайте функцию, память, взаимодействие и доступные объяснения. Объясните, является ли результат рекомендацией и как его исправить; не удаляйте запасной путь, пока та же задача не проверена на всем поддерживаемом диапазоне. Управляемая установка может иметь иные ограничения, чем личный браузер; документируйте поддерживаемые конфигурации и сохраняйте рабочий вариант, если администратор отключает необязательный граф.

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

Карта утверждений и источников

  • Модель программирования графа и граница между построением и выполнением браузером описаны в модели программирования W3C.
  • Доступность отдельной операции проверяется через opSupportLimits(); это не раскрывает бэкенд или оборудование.
  • Оговоренная граница конфиденциальности для возможностей и обработки входа описана в соображениях конфиденциальности W3C; загрузки, хранение и телеметрия приложения являются отдельными потоками данных.
  • Спецификация WebNN служит источником для утверждений о проверке, выполнении и совместимости; описанные проверки являются критериями приложения, а не нормативной гарантией браузера.

Публичные источники

#WebNN#Конфиденциальность Браузера#Машинное Обучение#Совместимость

Переведите BotBrowser из исследований в продакшн

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