Мотивация

Важной частью работы специалиста по данным является адаптация лучших практик разработки программного обеспечения для повышения производительности, стабильности и читаемости конвейера данных.

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

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

Векторизация

Согласно Википедии, в контексте Python векторизация определяется программированием массивов и автоматической векторизацией.

Программирование массивов, стиль компьютерного программирования, в котором операции применяются к целым массивам, а не к отдельным элементам.
Автоматическая векторизация, оптимизация компилятора, которая преобразует циклы в векторные операции.

Например: в следующем коде pandas мы создаем новый столбец из существующих столбцов в кадре данных. Векторизация заняла 2,4 мс, что в 100 раз быстрее, чем обычный метод df.iterrows() (976 мс).

df["ratio"] = 100 * (df["d"] / df["c"])
result:
time: 2.41 ms (started: 2023-08-20 15:32:05 -07:00)
for idx, row in df.iterrows():
    # creating a new column 
    df['ratio'] = 100 * (row["d"] / row["c"]) 

result:
time: 976 ms (started: 2023-08-20 15:32:03 -07:00)

Если вы выполняете числовые вычисления или вычисления с интенсивным использованием данных на Python и вам нужна производительность, вам обязательно стоит попробовать поискать в Numpy или Pandas данные для манипулирования данными, чтобы воспользоваться преимуществами векторизации.

Почему векторизация выполняется намного быстрее?

Векторизованные операции в Python, реализованные в таких библиотеках, как NumPy, выполняются быстрее, чем собственные циклы, поскольку они

  • использовать высокооптимизированные низкоуровневые библиотеки, написанные на C и Fortran,
  • обойти динамическую типизацию Python и накладные расходы цикла
  • использовать смежные блоки памяти для эффективного кэширования доступа
  • эти операции могут быть автоматически распараллелены и получить выгоду от снижения накладных расходов интерпретатора за счет…