Что предлагает язык Rust для ML и AI по состоянию на 2023 год? Как это соотносится с гигантами (например, библиотеками Pytorch, Tensorflow)? Самое главное, помогает ли это вам стать профессиональным инженером машинного обучения? Вот вопросы, которые возникли у меня как у новичка в области машинного обучения и энтузиаста языков программирования. Я попытался коснуться поверхности и сообщить о своих выводах, чтобы вы также могли иметь представление об ML за пределами Python, C++.

Это сложно?

Да, особенно если вы родом из динамически типизированных языков (Python, Javascript). Rust — ОЧЕНЬ строгий/статически типизированный язык, кому это выгодно? Ну, на самом деле Rust преобразует множество ошибок динамических языков в реальные ошибки, но в первый раз не возлагайте на них больших надежд. Rust также имеет много функций, которых нет на высоком уровне: макросы, владение/заимствование, трейты/реализации, результаты (обработка ошибок) и, возможно, другие. Изучение Rust само по себе является сложной задачей, но если у вас есть яйца, то оно того стоит?

Стоит ли оно того?

Да, абсолютно. Вы научитесь не только искусственному интеллекту, создавая его с нуля, но и низкоуровневому программированию — навыку, который немногие осваивают или даже знают. Нет API Keras или torch.NN, в котором есть все слои, которые вы, вероятно, никогда не будете использовать, есть Linfa, но он больше сравнивается со Scikit, узнайте, что Keras или torch.NN. Если вам нужен слой Conv2d, вам придется создать его самостоятельно. Создание глубокой сверточной нейронной сети на Rust — это подвиг, который вы укажете в своем резюме. Я дам вам паузу, чтобы решить, хотите ли вы отправиться в такое путешествие, а затем я расскажу о том, какие API доступны в Rust и стоит ли их изучать.

API ML/AI в RUST

Вкратце, вот список некоторых полезных ящиков ML/AI в Rust.

Крейты Linfa и Smartcore похожи на scikit-learn, ndarray предоставляет многомерные векторы (тензоры), petgraph предоставляет API для графиков, ndarry_image помогает читать изображения и преобразовывать их в двухмерные массивы RGB, а rust-gpu позволяет использовать GPU, но я не знаю, совместим ли он с ML и другими ящиками. Вероятно, есть и другие библиотеки, но я не нашел ни одного ящика для обработки естественного языка (NLP) или обработки звука. Пожалуйста, порекомендуйте любые другие ящики, если вы найдете их полезными. Теперь самый важный вопрос: что вы на самом деле можете построить, не разрабатывая библиотеку Tensorflow для Rust?

Что вы можете создать в спуске количество времени?

Начнем с того, что вы не создадите:

  • ИИ НЛП, не рассчитывайте создать Alexa или Siri на Rust, технологии еще нет.
  • Обработка звука, никаких поддельных голосов.
  • GAN, а не такие виды оружия, о которых вы думаете, а генеративно-состязательные сети (например, midjourney, dall-e)

Хорошо, теперь, когда у вас есть некоторые размытые ожидания, вот что вы, вероятно, можете создать:

  • Регрессионные модели (linfa, SmartCore)
  • Модели компьютерного зрения (резюме)
  • Алгоритмы ближайшего соседа (linfa, SmartCore)
  • Классификационные модели, нет хорошего API, вам придется создать API самостоятельно (ваши навыки)
  • Модели с учителем (linfa, SmartCore)

Есть некоторые ресурсы, за которыми вы можете следить, но они предназначены для того, чтобы намочить ваши ноги, и не более того, как это видео на YouTube, в котором с нуля создается нейронная сеть на Rust.

Поддержка графического процессора

Удачи :).

Изучайте ML на C++, было бы проще…

Изучите C++, который проще, чем Rust, поскольку он следует парадигмам популярных языков и не имеет много сложных концепций, если вы не знаете, что каждая популярная библиотека Python ML использует C++ в серверной части, что означает, что у них есть API на C++. Например, у Tensorflow есть Tensorflow Lite, pytorch также поддерживает API на C++, а opencv был построен на C++. Более того, C++ быстрее и ускорит ваш рабочий процесс.

Ищете что-то проще?

Если вы хотите узнать больше об ML и немного разбираетесь в веб-разработке, я сделал блог о том, как вы можете интегрировать Tensorflow с React.js. Если вы только начинаете, изучите Pytorch, но будьте осторожны, чтобы не застрять в аду туториалов.