CoderCastrov logo
CoderCastrov
Машинное обучение

Как провести бенчмарк реализаций машинного обучения на Rails

Как провести бенчмарк реализаций машинного обучения на Rails
просмотров
8 мин чтение
#Машинное обучение

Введение

Это часть серии блогов, связанных с реализацией искусственного интеллекта. Если вас интересует предыстория или как все происходит:

#1) Как парсить локальные результаты Google с помощью искусственного интеллекта?#2) Реальный пример машинного обучения на Rails#3) Советы и сравнения при обучении искусственного интеллекта#4) Машинное обучение в парсинге с помощью Rails#5) Реализация моделей ONNX в Rails#6) Как гибридный парсер на основе машинного обучения превосходит традиционный парсер#7) Как провести бенчмарк реализаций машинного обучения на Rails

На этой неделе мы покажем, как мы проводим бенчмарк нашей реализации машинного обучения, которую мы разработали для API парсера Google Local Pack от SerpApi на Rails.

I — Бенчмарк с низкой точностью для общего процесса парсинга (100 раз)

Мы будем использовать те же запросы, которые использовали в прошлой недельной публикации блога, чтобы создать бенчмарк для отчета в миллисекундах. Однако стоит отметить, что среднее время выполнения 100 раз одного и того же процесса будет подвержено погрешности. Я проведу еще один тест на отдельном результате, чтобы получить более реалистичные числа. Этот процесс отразит, как это повлияет на код пользователя, выполняющего поиск. Случаи с необычным поведением должны быть отражены независимо от погрешности.

Вот код бенчмарка для Rails:

traditional_benchmarks = []
ml_benchmarks = []
100.times do
  traditional_benchmarks << Benchmark.ms { search.parse! false }
  ml_benchmarks << Benchmark.ms { search.parse! true }
end

traditional_average = traditional_benchmarks.sum / traditional_benchmarks.size
ml_average = ml_benchmarks.sum / ml_benchmarks.size

average_difference = ml_average - traditional_average if traditional_average < ml_average
ratio_change = ml_average / traditional_average
change = "медленнее"

else
  ratio_change = traditional_average / ml_average
  change = "быстрее"
end

puts "Среднее время выполнения традиционного парсера: #{traditional_average} мс"
puts "Среднее время выполнения гибридного парсера с машинным обучением: #{ml_average} мс"
puts "Среднее различие: #{average_difference} мс"
puts "Гибридный парсер с машинным обучением в #{ratio_change} раз(а) #{change}, чем традиционный парсер"

Дантист

"local_results": {
    "places": [
      {
        "position": 1,
        "title": "Косметическая стоматология Аустина, Доктор Тежас Патель",
        "address": "221 W 6th St #940",
        "rating": 4.9,
        "reviews": 275,
        "hours": "Закрывается скоро ⋅ 16:00",
        "phone": "(512) 476-2336",
        "lsig": "AB86z5V7-Co76bptvuPt00IjA1ut",
        "place_id_search": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&location=Austin%2C+Texas%2C+United+States&lsig=AB86z5V7-Co76bptvuPt00IjA1ut&ludocid=17726167689886688143&q=Dentist&tbm=lcl",
        "gps_coordinates": {
          "latitude": 30.26795,
          "longitude": -97.74515
        }
      },
      {
        "position": 2,
        "title": "Восточная стоматология Аустина",
        "address": "1000 E 5th St STE 110 · В апартаментах Коразон",
        "rating": 4.8,
        "hours": "Закрывается скоро ⋅ 16:00",
        "phone": "(512) 499-0067",
        "lsig": "AB86z5WbLP6dZDWYnq91fO356Est",
        "place_id_search": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&location=Austin%2C+Texas%2C+United+States&lsig=AB86z5WbLP6dZDWYnq91fO356Est&ludocid=16796499427254916480&q=Dentist&tbm=lcl",
        "gps_coordinates": {
          "latitude": 30.264153,
          "longitude": -97.73239
        }
      },
      {
        "position": 3,
        "title": "Косметическая стоматология Аустина",
        "phone": "(512) 551-1880",
        "lsig": "AB86z5Wcc9TbOpkoDmgKyi1TUoUY",
        "place_id_search": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&location=Austin%2C+Texas%2C+United+States&lsig=AB86z5Wcc9TbOpkoDmgKyi1TUoUY&ludocid=1429802282623203746&q=Dentist&tbm=lcl",
        "gps_coordinates": {
          "latitude": 30.272924,
          "longitude": -97.7444
        }
      }
    ]
  },

-Запрос: Дантист Среднее время обработки для традиционного парсера: 344.3701663099887 ms Среднее время обработки для гибридного парсера с использованием машинного обучения: 349.1813165999997 ms Среднее различие: +4.811150290011028 ms Гибридный парсер с использованием машинного обучения 1.0139708684453235 раза медленнее традиционного парсера.

Книжный магазин

"local_results": {
    "places": [
      {
        "position": 1,
        "title": "BookPeople",
        "type": "Книжный магазин",
        "address": "603 N Lamar Blvd",
        "rating": 4.7,
        "delivery": "Покупка в магазине·Забор на улице·Доставка",
        "hours": "Открыто ⋅ Закрывается в 19:00",
        "phone": "(512) 472-5050",
        "lsig": "AB86z5VOIjaQM_OHJDDP78c75lF9",
        "place_id_search": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&location=Austin%2C+Texas%2C+United+States&lsig=AB86z5VOIjaQM_OHJDDP78c75lF9&ludocid=15954964542614962629&q=Bookstore&tbm=lcl",
        "gps_coordinates": {
          "latitude": 30.271843,
          "longitude": -97.752945
        }
      },
      {
        "position": 2,
        "title": "South Congress Books",
        "type": "Книжный магазин",
        "address": "1608 S Congress Ave",
        "rating": 4.5,
        "reviews": 203,
        "delivery": "Покупка в магазине·Забор на улице",
        "hours": "Открыто ⋅ Закрывается в 18:00",
        "phone": "(512) 916-8882",
        "lsig": "AB86z5WuflRhwRxW1_l4kcQe8HiA",
        "place_id_search": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&location=Austin%2C+Texas%2C+United+States&lsig=AB86z5WuflRhwRxW1_l4kcQe8HiA&ludocid=4735403951136453416&q=Bookstore&tbm=lcl",
        "gps_coordinates": {
          "latitude": 30.247662,
          "longitude": -97.750626
        }
      },
      {
        "position": 3,
        "title": "12th Street Books",
        "type": "Магазин букинистики",
        "address": "827 W 12th St",
        "rating": 4.3,
        "reviews": 13,
        "hours": "Временно закрыто",
        "phone": "(512) 499-8828",
        "lsig": "AB86z5WZ7ooDkCDty0PCVl-RnDqT",
        "place_id_search": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&location=Austin%2C+Texas%2C+United+States&lsig=AB86z5WZ7ooDkCDty0PCVl-RnDqT&ludocid=16276231750099540045&q=Bookstore&tbm=lcl",
        "gps_coordinates": {
          "latitude": 30.276222,
          "longitude": -97.74959
        }
      }
    ]
  },

Запрос: Книжный магазин Среднее время обработки для традиционного парсера: 282.3834452000028 мс Среднее время обработки для гибридного парсера с использованием машинного обучения: 276.60691514000746 мс Среднее различие: -5.776530059995366 мс Гибридный парсер с использованием машинного обучения работает 1.0208835345171017 раза быстрее чем традиционный парсер.

Мексиканский ресторан

"local_results": {
    "places": [
      {
        "position": 1,
        "title": "Tres Potrillos",
        "type": "Мексиканская кухня",
        "delivery": "Здесь можно поесть на месте или заказать еду с собой, но нет доставки",
        "lsig": "AB86z5UnM7a_iraiJwHbX4RTV74b",
        "place_id_search": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&location=Austin%2C+Texas%2C+United+States&lsig=AB86z5UnM7a_iraiJwHbX4RTV74b&ludocid=4949025990990656275&q=Mexican+Restaurant&tbm=lcl",
        "gps_coordinates": {
          "latitude": 30.267153,
          "longitude": -97.74306
        }
      },
      {
        "position": 2,
        "title": "Comedor",
        "type": "\"Их интерпретация мексиканской кухни исключительна.\"",
        "address": "501 Colorado St",
        "rating": 4.4,
        "reviews": 491,
        "hours": "Закрыто ⋅ Открывается в 17:00",
        "lsig": "AB86z5XVNkH5NYsRCN5t2FCdM89-",
        "place_id_search": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&location=Austin%2C+Texas%2C+United+States&lsig=AB86z5XVNkH5NYsRCN5t2FCdM89-&ludocid=6958240678106455106&q=Mexican+Restaurant&tbm=lcl",
        "gps_coordinates": {
          "latitude": 30.2676,
          "longitude": -97.74416
        }
      },
      {
        "position": 3,
        "title": "Iron Cactus Mexican Restaurant and Margarita Bar",
        "type": "Мексиканская кухня",
        "price": "$$",
        "address": "606 Trinity St",
        "rating": 4.1,
        "delivery": "Здесь можно поесть на месте или заказать еду с собой, но нет доставки",
        "lsig": "AB86z5X7Qq4vf--TBLEsXDYRUbVd",
        "place_id_search": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&location=Austin%2C+Texas%2C+United+States&lsig=AB86z5X7Qq4vf--TBLEsXDYRUbVd&ludocid=2855033105612448970&q=Mexican+Restaurant&tbm=lcl",
        "gps_coordinates": {
          "latitude": 30.2674,
          "longitude": -97.73945
        }
      }
    ]
  },

Запрос: Мексиканский ресторан Среднее время выполнения традиционного парсера: 225.45420559999457 мс Среднее время выполнения гибридного парсера с использованием машинного обучения: 223.7522506300229 мс Среднее различие: -1.7019549699716663 мс Гибридный парсер с использованием машинного обучения работает 1.007606426148472 раза быстрее традиционного парсера.

Страховое агентство

"local_results": {
    "places": [
      {
        "position": 1,
        "title": "Amco Insurance Austin",
        "type": "Страховое агентство",
        "address": "RdB, 12603 Market Street",
        "rating": 1,
        "reviews": 1,
        "phone": "(713) 450-4949",
        "lsig": "AB86z5XbiSodHxmtytu2NF12jBla",
        "place_id_search": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&location=Austin%2C+Texas%2C+United+States&lsig=AB86z5XbiSodHxmtytu2NF12jBla&ludocid=3762069798187571614&q=Insurance+Agency&tbm=lcl",
        "gps_coordinates": {
          "latitude": 30.267153,
          "longitude": -97.74306
        }
      },
      {
        "position": 2,
        "title": "Michaels Insurance Group",
        "type": "Страховое агентство",
        "address": "501 Congress Ave Suite 150A",
        "hours": "Открыто ⋅ Закрывается в 18:00",
        "phone": "(512) 593-1171",
        "lsig": "AB86z5UOT_Ai1eBIwgwkGAIAMAF8",
        "place_id_search": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&location=Austin%2C+Texas%2C+United+States&lsig=AB86z5UOT_Ai1eBIwgwkGAIAMAF8&ludocid=16496161963606301439&q=Insurance+Agency&tbm=lcl",
        "gps_coordinates": {
          "latitude": 30.267204,
          "longitude": -97.74261
        }
      },
      {
        "position": 3,
        "title": "Jones Derek",
        "type": "Страховое агентство",
        "address": "401 Congress Ave # 1900 · В Frost Bank Tower",
        "phone": "(512) 469-3430",
        "years_in_business": "Более 10 лет на рынке",
        "lsig": "AB86z5VtQJgNsgG5T_iWQdrzIjPr",
        "place_id_search": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&location=Austin%2C+Texas%2C+United+States&lsig=AB86z5VtQJgNsgG5T_iWQdrzIjPr&ludocid=1165792112025048434&q=Insurance+Agency&tbm=lcl",
        "gps_coordinates": {
          "latitude": 30.266655,
          "longitude": -97.74313
        }
      }
    ]
  },

Запрос: Страховое агентство Среднее время выполнения традиционного парсера: 243.73682075000943 ms Среднее время выполнения гибридного парсера с использованием машинного обучения: 242.52781047999179 ms Средняя разница: -1.209010270017643 ms Гибридный парсер с использованием машинного обучения работает 1.0049850376648553 раза быстрее традиционного парсера

Кофе

"local_results": {
    "places": [
      {
        "position": 1,
        "title": "Houndstooth Coffee",
        "type": "Кофейня",
        "price": "$$",
        "address": "401 Congress Ave #100c · В здании Frost Bank Tower",
        "rating": 4.6,
        "delivery": "Здесь можно поесть·Взять с собой·Нет доставки",
        "lsig": "AB86z5Vdw6C2pJpM0xQ6JUx2KONU",
        "place_id_search": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&location=Austin%2C+Texas%2C+United+States&lsig=AB86z5Vdw6C2pJpM0xQ6JUx2KONU&ludocid=11265938073076301333&q=Coffee&tbm=lcl",
        "gps_coordinates": {
          "latitude": 30.2664,
          "longitude": -97.74278
        }
      },
      {
        "position": 2,
        "title": "Starbucks",
        "type": "Кофейня",
        "price": "$$",
        "address": "600 Congress Ave",
        "rating": 4.1,
        "reviews": 513,
        "delivery": "Здесь можно поесть·Драйв-ин·Доставка",
        "lsig": "AB86z5XTJ_Io_anVBu2fU6Zaqu3b",
        "place_id_search": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&location=Austin%2C+Texas%2C+United+States&lsig=AB86z5XTJ_Io_anVBu2fU6Zaqu3b&ludocid=10605736027611436825&q=Coffee&tbm=lcl",
        "gps_coordinates": {
          "latitude": 30.26826,
          "longitude": -97.74296
        }
      },
      {
        "position": 3,
        "title": "The Hideout Coffee House",
        "type": "Кофейня",
        "price": "$",
        "address": "617 Congress Ave",
        "rating": 4.4,
        "delivery": "Здесь можно поесть·Взять с собой·Доставка без контакта",
        "hours": "Закрыто ⋅ Открывается в 7:00 четверг",
        "lsig": "AB86z5WSxdnDKVF_iLXNN6Lg0UQ5",
        "place_id_search": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&location=Austin%2C+Texas%2C+United+States&lsig=AB86z5WSxdnDKVF_iLXNN6Lg0UQ5&ludocid=15498522356495312950&q=Coffee&tbm=lcl",
        "gps_coordinates": {
          "latitude": 30.268572,
          "longitude": -97.742165
        }
      }
    ]
  },

Запрос: Кофе Среднее время обработки для традиционного парсера: 381.3813184999935 ms Среднее время обработки для гибридного парсера с машинным обучением: 374.56337533000345 ms Средняя разница: -6.817943169990031 ms Гибридный парсер с машинным обучением работает 1.0182023754030494 раза быстрее традиционного парсера.

II — Точный показатель для всего процесса парсинга

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

require "benchmark/ips"Benchmark.ips do |x|
  x.config(:time => 60, :warmup => 2)
  x.report("Традиционный парсер") { search.parse! false }
  x.report("Гибридный парсер на основе машинного обучения") { search.parse! true }
  x.compare!
end

Вот результат:

"local_results": {
    "places": [
      {
        "position": 1,
        "title": "Austin MacWorks",
        "type": "Магазин компьютеров",
        "address": "450 W 2nd St · В районе 2nd Street",
        "rating": 3.6,
        "reviews": 35,
        "delivery": "Покупка в магазине·Самовывоз из магазина",
        "hours": "Скоро закроется ⋅ 6PM",
        "phone": "(512) 476-7000",
        "lsig": "AB86z5UwIX4i7B78tBctQlVN-S5I",
        "place_id_search": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&location=Austin%2C+Texas%2C+United+States&lsig=AB86z5UwIX4i7B78tBctQlVN-S5I&ludocid=7461317996150463296&q=Computer+Store&tbm=lcl",
        "gps_coordinates": {
          "latitude": 30.265661,
          "longitude": -97.74838
        }
      },
      {
        "position": 2,
        "title": "Mactell Corporation",
        "type": "Магазин компьютеров",
        "phone": "(512) 457-1133",
        "lsig": "AB86z5UVY5r6ZpGnUqP-wixtE-Nu",
        "place_id_search": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&location=Austin%2C+Texas%2C+United+States&lsig=AB86z5UVY5r6ZpGnUqP-wixtE-Nu&ludocid=1747786920379540476&q=Computer+Store&tbm=lcl",
        "gps_coordinates": {
          "latitude": 30.272924,
          "longitude": -97.7444
        }
      },
      {
        "position": 3,
        "title": "Campus Computer Store",
        "type": "Магазин компьютеров",
        "address": "2304 Whitis Avenue, (FAC) 109 · В Университете Техаса в Остине",
        "rating": 3.8,
        "reviews": 53,
        "delivery": "Покупка в магазине·Самовывоз·Доставка",
        "hours": "Скоро закроется ⋅ 6PM",
        "phone": "(512) 475-6550",
        "lsig": "AB86z5XQ-nWlsJPMAzOoIwJ_Pjll",
        "place_id_search": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&location=Austin%2C+Texas%2C+United+States&lsig=AB86z5XQ-nWlsJPMAzOoIwJ_Pjll&ludocid=15624962612924024738&q=Computer+Store&tbm=lcl",
        "gps_coordinates": {
          "latitude": 30.286259,
          "longitude": -97.74032
        }
      }
    ]
  },Calculating -------------------------------------
  Традиционный парсер      5.741  (± 0.0%) i/s -    343.000  in  60.020695s
    Гибридный парсер на основе машинного обучения      4.807  (± 0.0%) i/s -    288.000  in  60.158318sComparison:
  Традиционный парсер:        5.7 i/s
    Гибридный парсер на основе машинного обучения:        4.8 i/s - 1.19x  (± 0.00) медленнее

III — Бенчмарк для локального процесса парсинга

Давайте также определим локальный бенчмарк для процесса локального парсинга. Это прямое сравнение двух методов. Вот тест для этого:

require "benchmark/ips"
Benchmark.ips do |x|
  x.config(:time => 60, :warmup => 2)
  x.report("ML Hybrid Parser") { get_local_results_desktop_ml local_results_top }
  x.report("Традиционный парсер") { get_local_results_desktop }
  x.compare!
end

Вывод:

Calculating -------------------------------------
  Традиционный парсер     38.829  (± 2.6%) i/s -      2.328k in  60.015623s
    ML Hybrid Parser     23.121  (± 4.3%) i/s -      1.384k in  60.003592sComparison:
  Традиционный парсер:       38.8 i/s
    ML Hybrid Parser:       23.1 i/s - 1.68x  (± 0.00) медленнее

IV — Заключение

Если учесть точные результаты, то 1,68 раза медленнее локальное изменение и 1,19 раза медленнее весь процесс парсинга (внутренне связанный с поисковым запросом и только в результатах с локальной частью), все равно является хорошим переводом в миллисекундах. Учитывая, что традиционный парсер дает слишком много ложных результатов, эта реализация будет иметь критическое значение без неожиданных задержек при загрузке. Я видел, что она работает лучше в других поисковых запросах. Минимальное значение, которое я могу получить, составляет 1,07 раза медленнее для точных результатов во всем процессе парсинга. Максимальное значение, с которым я сталкивался, - это этот результат, поэтому я делюсь им в качестве примера честного представления. В любом случае, это будет незначительно для пользователя. Я хотел бы поблагодарить читателя за внимание и блестящих людей из SerpApi за всю их поддержку. На следующей неделе мы поговорим о общих целях тестирования ML.