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

Но что, если бы потоковая передача могла применяться и к мобильным приложениям? Это идея AppStreamer [PDF], новой программы, предназначенной для снижения требований к хранилищу приложений за счет предиктивной потоковой передачи. Программное обеспечение было разработано группой исследователей из Университета принца Сонгкла в Таиланде, Университета Пердью , Университета Иллинойса в Урбана-Шампейн , Исследовательской лаборатории AT&T и Технологического института Джорджии при поддержке AT&T и Национального научного фонда .

«Мы хотим потреблять больше контента на наших устройствах, но эти устройства не так богаты ресурсами, как нам хотелось бы», — говорит Саураб Багчи , профессор электротехники и вычислительной техники в Университете Пердью, который руководил исследованием. «У вас также есть части мира, которые не могут позволить себе новейшие смартфоны, так как же вы предоставите им возможность потреблять контент? Потоковые приложения казались логичным развитием».

AppStreamer предполагает, что на устройствах нет места для локального хранения, поэтому он использует облачное хранилище или хранилище «на границе», что означает, что серверы расположены ближе к конечной точке сети, такой как базовая станция поставщика услуг связи. 

Когда приложению, такому как мобильная игра, требуется ресурс, например изображение, видео или звуковой файл, AppStreamer извлекает этот ресурс из удаленного хранилища непосредственно перед тем, как он понадобится приложению. В результате приложениям не нужно будет сохранять все свои ресурсы локально, что сводит к минимуму их необходимое хранилище. Более того, когда пользователи устанавливают приложение, они могут сразу начать им пользоваться, даже если оно еще не загружено полностью. AppStreamer работает на уровне между мобильным приложением и операционной системой устройства, не требуя изменений в самом приложении. «На самом деле нам даже не нужен исходный код мобильного приложения, — говорит Багчи. «Приложение можно рассматривать как двоичный черный ящик, и мы смотрим только на его взаимодействие с операционной системой». Ключевой частью функциональности AppStreamer является прогнозирование того, какие ресурсы потребуются приложению и когда эти ресурсы потребуются. Для этого AppStreamer использует машинное обучение, которое начинается с фазы автономного обучения для конкретного приложения, чтобы узнать вероятности перехода из одного состояния в другое. Программное обеспечение извлекает ресурсы для определенного состояния только в том случае, если это состояние имеет наибольшую вероятность следовать текущему состоянию.

Например, при навигации по фэнтезийному миру мобильной игры игроки непрерывно перемещаются с одного острова на другой. «Часть машинного обучения способна предсказать это и знает все ресурсы, соответствующие следующему острову», — говорит Багчи. «Ему не нужно добывать ресурсы для острова на дальнем конце мира. Только когда игрок приблизится к этому острову, ему нужно будет добыть ресурсы».

Команда протестировала AppStreamer, используя Dead Effect 2, шутер от первого лица, и Fire Emblem Heroes, пошаговую тактическую ролевую игру. Результаты показали, что AppStreamer обеспечивает тот же игровой процесс, что и при хранении всей игры на смартфоне, для 70 процентов игроков Dead Effect 2 и 88 процентов игроков Fire Emblem Heroes. AppStreamer также снизил требования к хранилищу более чем на 85 процентов для обеих игр.

Как и в любом приложении, использующем машинное обучение, возникают проблемы с точностью и представлением. «Прогнозирование — это тяжелая работа, и [с помощью AppStreamer] мы предсказываем поведение приложения», — говорит Багчи. «Сложно иметь достаточно данных, репрезентативных для разных типов игроков, для обучения модели машинного обучения, чтобы после развертывания AppStreamer в полевых условиях она была точной».

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