Склад, посылки и план, который не забывает
Водитель курьерской службы заехал на шумный склад: одна огромная куча посылок, а рядом ждут велосипед, фургон и грузовик. Хочется разложить одну большую работу на мелкие дела и не потерять порядок. План склада тут как TensorFlow: схема шагов и передач, как маршруты для посылок.
Раньше на складе всё шло на глаз. То грузят почти всё в одну машину, то снова и снова сверяют один и тот же список, то забывают, что часть посылок надо сначала отметить и проверить. В итоге время утекает, вещи копируют лишний раз, и шаги мешают друг другу.
Водитель берёт лист и рисует понятную схему: действие и стрелка к следующему месту. На одном месте взвесили, на другом наклеили, дальше отсканировали, потом погрузили. И рядом закрытая полка: там лежат текущие отметки и подсчёты, чтобы следующий круг не начинать с нуля. Так же работает и TensorFlow: одна связная схема шагов плюс то, что хранится между запусками.
Штука в том, что не всё связывается самой посылкой. Проверка безопасности должна быть раньше погрузки, даже если место в кузове уже есть. Водитель добавляет правило порядка, и склад перестаёт путаться. В TensorFlow такие связи порядка тоже ставят явно, чтобы шаги не наступали друг другу на пятки. Вывод простой: порядок на схеме спасает от сбоев.
А потом водитель раздаёт работу по силам: тяжёлое уходит в грузовик, быстрые мелочи на велосипед, остальное во фургон. И ещё одна находка: не гонять один и тот же список по кругу, а передать один раз в точку раздачи и брать оттуда. В TensorFlow так же выбирают, где выполнять шаг, и делают явные передачи, чтобы не таскать лишние копии.
Днём звонит клиент и просит только один статус. Водитель не гоняет весь маршрут, а делает ровно те шаги, что дают ответ. TensorFlow тоже умеет запускать только нужный кусок схемы. А чтобы понять, где тормозит, водитель помечает, на каком месте задержка; в TensorFlow есть средства, которые показывают схему и где уходит время и память.
Под вечер фургон не заводится. Водитель останавливает текущую возню, достаёт с закрытой полки сохранённые отметки и продолжает с того места, где всё было ясно. Так и TensorFlow может остановиться и снова пойти, не теряя важное. На таком плане склад держится увереннее, чем на памяти и догадках.