Всем привет, я был выбран для участия в Google Summer Of Code’17 в рамках организации CloudCV. В этом посте я опишу свой опыт первых двух недель программы.

Начну с краткого описания моего проекта:

EvalAI:

EvalAI создан командой энтузиастов с открытым исходным кодом, работающих в CloudCV. Это веб-платформа с открытым исходным кодом, целью которой является оценка современного состояния искусственного интеллекта. Его цель — помочь исследователям, практикам и студентам в области искусственного интеллекта проводить, сотрудничать и участвовать в соревнованиях по искусственному интеллекту, организованных по всему миру.

В настоящее время на платформе проводится наш первый челлендж VQA-Real Image Challenge, и мы ищем больше таких челленджей.

Таким образом, GSoC предоставляет вам платформу, где ваша кривая обучения увеличивается от прямой до экспоненциальной. В течение моей первой недели мой наставник посоветовал мне научиться заранее планировать свой день и работать организованно и манерно. Я попробовал эту практику в течение нескольких дней и нашел ее весьма полезным инструментом в тайм-менеджменте. Это эффективный способ управлять часами для вашей работы. Он не только дает вам оценку вашей способности выполнять работу, но также дает информацию об объеме работы, которую вы проделали в течение дня.

Кроме того, я также добавил несколько функций, таких как «Свяжитесь с нами», и начал создавать вызов с помощью zip-файла.

  1. Свяжитесь с нами:

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

2. Создание задачи с использованием Zip-файла.

Вторая неделя была сложной для меня, так как я был новичком в работе с файлами yaml и zip. Я также боялся иметь дело с файлами в python, но эта функция убрала все это. Это большая функция, и на все ее тесты ушло почти две недели.

Первым шагом было настроить фиксированный формат для файла yaml, который мы предоставим пользователю хоста вызова. Пользователь хоста с заполненным файлом yaml и другими необходимыми файлами будет привязан к zip-папке и загружен на сервер. Теперь пришло время обработать загруженный файл, загрузить его на сервер, разархивировать и прочитать содержимое файла yaml, а затем создать задачу с использованием минимальных запросов к базе данных. Настоящий мозговой штурм проводился в двух местах: во-первых, для создания объекта File в запросе к базе данных, а во-вторых, для уменьшения количества запросов, а транзакция должна быть атомарной по своей природе.

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

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

Это не конец. Я скоро вернусь с обновлением за следующие две недели. :)