Всем привет, я был выбран для участия в Google Summer Of Code’17 в рамках организации CloudCV. В этом посте я опишу свой опыт первых двух недель программы.
Начну с краткого описания моего проекта:
EvalAI:
EvalAI создан командой энтузиастов с открытым исходным кодом, работающих в CloudCV. Это веб-платформа с открытым исходным кодом, целью которой является оценка современного состояния искусственного интеллекта. Его цель — помочь исследователям, практикам и студентам в области искусственного интеллекта проводить, сотрудничать и участвовать в соревнованиях по искусственному интеллекту, организованных по всему миру.
В настоящее время на платформе проводится наш первый челлендж VQA-Real Image Challenge, и мы ищем больше таких челленджей.
Таким образом, GSoC предоставляет вам платформу, где ваша кривая обучения увеличивается от прямой до экспоненциальной. В течение моей первой недели мой наставник посоветовал мне научиться заранее планировать свой день и работать организованно и манерно. Я попробовал эту практику в течение нескольких дней и нашел ее весьма полезным инструментом в тайм-менеджменте. Это эффективный способ управлять часами для вашей работы. Он не только дает вам оценку вашей способности выполнять работу, но также дает информацию об объеме работы, которую вы проделали в течение дня.
Кроме того, я также добавил несколько функций, таких как «Свяжитесь с нами», и начал создавать вызов с помощью zip-файла.
- Свяжитесь с нами:
Эта функция была простой и включала API с простой формой, использующей угловой материал для конечного пользователя с тестами.
2. Создание задачи с использованием Zip-файла.
Вторая неделя была сложной для меня, так как я был новичком в работе с файлами yaml и zip. Я также боялся иметь дело с файлами в python, но эта функция убрала все это. Это большая функция, и на все ее тесты ушло почти две недели.
Первым шагом было настроить фиксированный формат для файла yaml, который мы предоставим пользователю хоста вызова. Пользователь хоста с заполненным файлом yaml и другими необходимыми файлами будет привязан к zip-папке и загружен на сервер. Теперь пришло время обработать загруженный файл, загрузить его на сервер, разархивировать и прочитать содержимое файла yaml, а затем создать задачу с использованием минимальных запросов к базе данных. Настоящий мозговой штурм проводился в двух местах: во-первых, для создания объекта File в запросе к базе данных, а во-вторых, для уменьшения количества запросов, а транзакция должна быть атомарной по своей природе.
В решении этих проблем заслуга моих наставников. Они помогли мне выполнить задачу эффективным способом. После этого я работал над тестовыми примерами для вышеуказанной функции, а также создал для нее пользовательский интерфейс.
Как только текущая задача будет решена, мы интегрируем эту функцию в производство.
Это не конец. Я скоро вернусь с обновлением за следующие две недели. :)