Глава 12. Тестирование, оптимизация и развертывание моделей
501
12.3. Развертывание моделей TensorFlow.js
на различных платформах
и в различных средах
Вы оптимизировали модель, она быстрая и облегченная, и все тесты пройдены.
Поехали! Ура! Но прежде, чем открывать шампанское, нужно еще коечто сделать.
Пришло время включить модель в приложение и показать ее вашим пользовате
лям. В этом разделе мы обсудим несколько платформ для развертывания. Наиболее
известные варианты: развертывание в вебплатформе и развертывание на платформе
сервиса Node.js, но мы рассмотрим и несколько более экзотических сценариев напо
добие развертывания на основе расширения браузера или приложения одноплатного
встроенного компьютера. Мы приведем простые примеры и обсудим особые нюансы
каждой из этих платформ.
12.3.1. Дополнительные нюансы развертывания
на веб-платформе
Начнем с того, что обратимся снова к наиболее распространенному для моделей
TensorFlow.js сценарию — развертыванию на вебплатформе в виде части веб
страницы. При этом сценарии обученная, а возможно, и оптимизированная модель
загружается через JavaScript с какоголибо сервера, после чего производит предсказа
ния с помощью движка JavaScript из браузера пользователя. Хороший пример этого
сценария — пример классификации изображений с помощью MobileNet, из главы 5.
Можете загрузить этот пример из каталога
tfjs-examples/mobilenet
. Напомним,
что соответствующий код загрузки модели и выполнения вывода выглядит вот так:
const MOBILENET_MODEL_PATH =
'https://storage.googleapis.com/tfjs-
models/tfjs/mobilenet_v1_0.25_224/model.json';
const mobilenet = await tf.loadLayersModel(MOBILENET_MODEL_PATH);
const response = mobilenet.predict(userQueryAsTensor);
Модель загружается из бакета платформы Google Cloud (Google Cloud Platform,
GCP). В случае подобных статических приложений с небольшим объемом трафика
можно легко разместить модель статически вместе с прочим содержимым сайта.
В более крупных, с большим объемом трафика приложениях имеет смысл разместить
модель в сети доставки контента (content delivery network, CDN) вместе с прочими
тяжеловесными ресурсами. Не забывайте учитывать совместное использование ре
сурсов разными источниками (CrossOrigin Resource Sharing, CORS) при настройке
бакетов GCP, Amazon S3 или других облачных сервисов — это распространенная
ошибка при разработке. При неправильной настройке CORS модель не загрузится
и в консоль будет выведено связанное с CORS сообщение об ошибке. Стоит обратить
внимание на этот нюанс, если ваше приложение прекрасно работает на локальной
машине, но отказывает после развертывания на платформе эксплуатации.
502
Do'stlaringiz bilan baham: |