Взять только необходимое подмножество файлов из проекта Python для создания развертываемого исполняемого файла? - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть очень большой проект ML, который включает в себя внутреннюю библиотеку обучения, метрик, демо и т. Д. c. Python классы, которые я написал. Мне нужно сделать только часть этого кода, развертываемого на периферийных устройствах. Моя файловая иерархия выглядит примерно так (упрощенно):

project
  -- ext (external libraries)
  -- lib (internal libraries)
     -- training
     -- inference
     -- metrics
     -- ..etc
  -- sub-project
     -- src
       -- sub-project-specific src files..
     -- bin
       -- sub-project executables here...

В вышеприведенном случае подпроекты будут получать доступ к внутренней библиотеке и к коду внешней библиотеки при необходимости.

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

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

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

1 Ответ

0 голосов
/ 11 апреля 2020

Лучший вариант для описания - использовать Docker. Здесь - это Python Docker Официальный образ.

Вы должны установить docker для создания и запуска docker образов. Идея заключается в том, чтобы включить в код docker код ml (например, виртуальную машину, но очень легкий), и развернуть его с папкой o port, связанной с основной ОС на docker, для отправки новых данных в модель и дать умозаключение.

...