Google снова лидирует в пространстве и определяет, как мы создаем и развиваем технологии. Стремление стать лидером в AI - не шутка, и они никого не ждут. Недавно они анонсировали Tensorflow Serving, API, который позволяет специалистам по обработке данных легко запускать предварительно созданный сверхбыстрый RESTFUL API для обслуживания своих моделей в среде, готовой к производству. Он включает в себя возможность обслуживать разные модели, И возможность одновременно обслуживать разные версии одной и той же модели. Слишком хорошо, чтобы быть правдой? Это Google, так что нет.
Начиная
Google упростил начало работы, предоставив нам файл докера.
Установить Docker
Для тех, кто не был знаком с докером до этого, как и я, позвольте мне сказать вам, что он значительно упрощает вашу жизнь, особенно для таких вещей. Поэтому, если у вас не установлен Docker, щелкните здесь, чтобы установить его.
Начать установку обслуживания Tensorflow
Начните с клонирования Tensorflow Serving Repo
git clone https://github.com/tensorflow/serving cd serving/tensorflow_serving/tools/docker
В этом каталоге докеров вы увидите 3 файла.
Dockerfile
, это минимальная виртуальная машина с предварительно установленной и скомпилированной службой TensorFlow.Dockerfile.devel
, это минимальная виртуальная машина со всеми зависимостями, необходимыми для построения TensorFlow Serving.Dockerfile.devel-gpu
, которая представляет собой минимальную виртуальную машину со всеми зависимостями, необходимыми для создания TensorFlow Serving с поддержкой графического процессора.
Я хотел, чтобы вы клонировали это репо, чтобы ознакомиться с кодом и примерами. Однако я создал свой собственный Dockerfile, который лучше подходит для быстрого обучения и тестирования. Щелкните здесь, чтобы перейти по ссылке репо. В этом репо также есть готовые модели, которые мы позже построим в этой серии.
Клонируйте репо на рабочем столе или в домашнем каталоге.
git clone https://github.com/brianalois/tensorflow_serving_tutorial.git
Сделайте сборку докеров, используя Dockerfile в моем репо. Это займет около 3-5 минут.
cd tensorflow_serving_tutorial
docker build --pull -t test-tensorflow-serving .
Запустите этот недавно созданный образ докера и войдите в виртуальную среду.
Или (если хотите скомпилировать самостоятельно)
Я предлагаю большинству людей просто создавать из моего образа докера и пропустить эту часть.
Если вы хотите скомпилировать подачу tf из исходного кода, вы можете это сделать. В исходном репозитории tf, где у них есть образы докеров, запустите эту команду (это займет от 30 минут до 2 часов, в зависимости от вашего компьютера):
cd serving/tensorflow_serving/tools/docker docker build --pull -t test-tensorflow-serving -f Dockerfile.devel .
Однако в зависимости от вашего компьютера эта команда может завершиться ошибкой. Это сработало для меня, и в настоящее время у меня есть лучший Mac, поэтому вам, вероятно, потребуется запустить эту команду, чтобы скомпилировать ее самостоятельно.
#however based on the ram of your computer you may have to run this docker build --pull --build-arg TF_SERVING_BUILD_OPTIONS="--copt=-mavx \ --cxxopt=-D_GLIBCXX_USE_CXX11_ABI=0 --local_resources 2048,.5,1.0" -t \ test-tensorflow-serving -f Dockerfile.devel .
Запустите образ Docker
Теперь, когда он построен, независимо от того, как вы это сделали, мы можем начать его запускать. Следующая команда не является прямым копированием и вставкой. Здесь вы должны использовать абсолютные пути к тому, который хотите использовать для своей докер-машины. Мы будем использовать каталог model_volume в только что клонированном репо. Мой путь - «/ Users / Brian / Desktop / model_volume /». Замени на любой ваш путь.
Совет: вы можете запустить эту команду в своем каталоге, чтобы найти путь
pwd
Затем запустите эту команду со своим абсолютным путем:
docker run -it -p 8500:8500 -p 8501:8501 -v /Users/Brian/Desktop/tensorflow_serving_tutorial/model_volume/:/home/ test-tensorflow-serving
Теперь, если все работает, вы должны быть в своем докере, и ваша оболочка должна что-то искать.
root@15954c4d0666:/#
Если это правильно, ВЫ ВХОДИТЕ!
Теперь мы можем перейти к забавной части и запустить tenorflow serve api:
tensorflow_model_server --port=8500 --rest_api_port=8501 --model_config_file=/home/configs/models.conf
Это в основном запускает сервер и обслуживает остальные api на порту 8501. Он использует конфигурацию из этого каталога на виртуальной машине /home/configs/models.conf, но на самом деле это относится к файлу в репо в этом каталоге.
cat model_volume/configs/models.config
Этот файл содержит информацию о конфигурации для сервера, чтобы он мог правильно обслуживать модели в репо. Давайте посмотрим на это очень быстро:
model_config_list: { config: { name: "xor", base_path: "/home/models/xor", model_platform: "tensorflow", model_version_policy: { all: {} } }, config: { name: "iris", base_path: "/home/models/iris", model_platform: "tensorflow", model_version_policy: { all: {} } } }
Это довольно очевидно, важно то, что если вы хотите обслуживать все версии своей модели, эта часть необходима, если у вас ее нет, то она будет обслуживать только последнюю модель:
model_version_policy: { all: {} }
Версии модели определяются по именам вложенных каталогов в этом конкретном каталоге модели.
Теперь давайте протестируем !!
Откройте другой терминал, чтобы сделать несколько запросов на завиток. Вы можете / должны использовать Postman, если хотите.
Ирис Классифицируйте
curl -X POST \ http://localhost:8501/v1/models/iris:classify \ -H 'cache-control: no-cache' \ -H 'postman-token: f7fb6e3f-26ba-a742-4ab3-03c953cefaf5' \ -d '{ "examples":[ {"x": [5.1, 3.5, 1.4, 0.2]} ] }'
Ответ:
{ "results": [ [ [ "Iris-setosa", 0.872397 ], [ "Iris-versicolor", 0.108623 ], [ "Iris-virginica", 0.0189799 ] ] ] }
Ирис Прогноз
curl -X POST \ http://localhost:8501/v1/models/iris/versions/2:predict \ -d '{ "signature_name": "predict-iris", "instances":[ [5.1, 3.5, 1.4, 0.2] ] }'
отклик:
{ "predictions": [ [ 0.872397, 0.108623, 0.0189799 ] ] }
Вот так! Все готово. Теперь вам должно быть интересно, как построить, обучить и сохранить мои модели в формате, который распознает этот API. Щелкните здесь, чтобы перейти ко второй части этой серии статей, которая отвечает на эти вопросы.
Удачи
- - Брайан Алоис Шардт