Для получения дополнительных галантерейных товаров, пожалуйста, обратите внимание на публичный аккаунт WeChat «AI Frontline» (ID: ai-front)
Через неделю после первого курса физики в Мичиганском университете профессор задал несколько задач, требующих моделирования систем многих тел. Эти вопросы должны быть решены до пятницы. Это была неделя, когда я выучил свой первый язык программирования, Matlab.
Вот почему за последнее десятилетие я время от времени выучил дюжину языков. Я никогда не подвергался никакому формальному обучению в области разработки программного обеспечения, кроме курсов по C++, которые я проходил в рамках вводного курса CS, и курсов по базам данных на основе Java, которые я проходил в аспирантуре. Для меня программирование — это выполнение домашней работы, анализ данных для ответов на вопросы или использование их для реализации своих идей. Иногда это означает знакомство с тонкостями алгоритмов или структур данных, но я никогда не писал код ради кода. У меня нет проблем с дженериками (не @me). Я думаю, что это описывает подавляющее большинство специалистов по данным и инженеров по машинному обучению, которых я знаю. При выборе инструментов для решения проблемы мы обычно отдаем предпочтение удобству использования и эффективности, а не основам программного обеспечения.
Перенесемся в 2018 год, и Python был принят сообществами машинного обучения и науки о данных. С синтаксисом Python легко начать работу, это отличный язык сценариев, и вы можете работать напрямую с базовой библиотекой C, когда хотите оптимизировать производительность. Однако для меня самая захватывающая часть Python заключается в том, что его можно использовать для построения целых систем от начала до конца. Пакеты для научных вычислений, такие как блокноты Numpy, Pandas, Matplotlib и Jupyter, пользуются огромной поддержкой сообщества. А когда приходит время создавать приложения для вашей работы, такие фреймворки, как Flask и Django, достаточно производительны, чтобы масштабироваться до сотен миллионов пользователей. Я могу использовать один язык программирования для построения всей системы.
Мне нравилось использовать Python в течение последних 10 лет. Но я не думаю, что буду использовать его в будущем, я буду использовать Swift.
На TensorFlow Dev Summit 2018 Крис Латтнер из Google объявил, что TensorFlow скоро будет поддерживать Swift. Не думайте, что TensorFlow для Swift — это просто оболочка для TensorFlow для устройств iOS. Это намного больше.Проект направлен на изменение инструментов по умолчанию, используемых всей экосистемой машинного обучения и науки о данных.
По мере того, как я знакомился со стеком Python, медленно прокрадывались две другие технологические тенденции: возрождение искусственного интеллекта с помощью нейронных сетей и глубокого обучения и использование искусственного интеллекта в миллиардах смартфонов и устройств IoT. Обе технологии требуют высокопроизводительных вычислений, и Python не кажется подходящим вариантом.
Для глубокого обучения необходимо передавать огромные объемы данных в сети с длинной цепочкой, что приводит к очень большому объему вычислений для глубокого обучения. Для быстрого выполнения этих вычислений программное обеспечение должно быть скомпилировано для специализированных процессоров с тысячами потоков и ядер. Эти проблемы более выражены на мобильных устройствах, где очень важны энергопотребление и тепловыделение. Оптимизация на более медленных процессорах с меньшим объемом памяти чрезвычайно сложна. Python до сих пор не смог оказать большую помощь.
Это большая проблема для специалистов по данным и исследователей машинного обучения. В итоге мы использовали GPU для вычислений хакерским способом, и многие из нас борются с разработкой мобильных приложений. Изучение нового языка возможно, но затраты на переход высоки. Просто посмотрите на кроссплатформенные проекты, такие как Node.js и React-Native, чтобы увидеть, сколько стоит переход. Раньше я планировал навсегда придерживаться своих пустых массивов, но теперь я не могу выполнить свою работу, не отказавшись от Python. Это уже недостаточно хорошее решение.
В мире, где доминируют машинное обучение и граничные вычисления, неспособность Python быть сквозным языком является движущей силой Swift для TensorFlow. Крис Латтнер считает, что динамическая типизация и интерпретатор Python сдерживают нас. По его словам, инженерам нужен язык, который рассматривает машинное обучение как «первоклассного гражданина». Хотя он дает представление о технических причинах, по которым необходим новый подход к анализу компилятора, чтобы изменить способ построения и выполнения программ, использующих TensorFlow, его аргументы наиболее поразительны в опыте программистов.
Функции, которые должен включать язык программирования, облегчающий машинное обучение:
Читаемый, эффективный синтаксис
возможность написания сценариев
Интерфейс как у ноутбука
Сторонние библиотеки, созданные активным сообществом
Возможность автоматической компиляции кода для конкретного оборудования от TPU до мобильных чипов
Может работать на мобильных устройствах
близко к производительности C
Латтнер и его команда добавляют все эти функции в Swift для TensorFlow. Синтаксис Swift почти так же эффективен, как Python, с интерпретатором скриптов. Лучше всего то, что для простоты переноса можно запускать любой код Python, а поскольку Swift теперь является языком разработки по умолчанию для разработки приложений iOS, развертывание на мобильных устройствах упрощается. Компилятор Swift с открытым исходным кодом и статическая типизация позволяют выполнять сборку для конкретных наборов микросхем ИИ. Как один из основателей Swift, Латтнер может быть предвзятым, но я убежден в его понимании машинного обучения.
Вы можете посмотреть все выступление Криса Латтнера здесь.
Прочитайте исходный текст:
https://heartbeat.fritz.ai/why-data-scientists-should-start-learning-swift-66c3643e0d0d