Basic to Advanced: Resolve’s ‘Deliver’ Window Demystified
Better control your project’s workflow and delivery by tweaking the options available in Resolve’s ‘Deliver’ window.
To developing colorists, some choices available in the Deliver page may be confusing. The Advanced tab contains many specific options for rendering a finished project, and while some of these are straightforward, others are a bit esoteric. For many projects, the Basic tab may be sufficient, but in this post we’ll delve into the features in the Advanced tab of Resolve’s Deliver window.
Deliver > Advanced > Presets
All of the tabs have an Easy Setup option. Depending on how the project was edited, selecting the corresponding Easy Setup will highlight and lock certain settings found below. Choosing Final Cut Pro XML Round Trip, for example, forces you to output individual source clips as opposed to a single clip.
The Avid AAF Round Trip can only output MXF files. Colorists can save their own Easy Setups as presets in the Intermediate and Advanced tabs.
Deliver > Advanced > Video
In Video, you can choose to output files as Individual Source Clips, used in the majority of outputs where you want to conform in a nonlinear editing software. The timeline can also be rendered as a Single Clip, an option for sending an off-site client a color pass for review.
Once you’ve chosen one of the two options we’ll need to decide what video format we’ll be outputting. This’ll be dependent on the post workflow for the job. For round-tripping back to Premiere, Final Cut or Avid, Quicktimes or MXF files are the norm. If a compositing machine is the next step in the post pipeline, outputting DPX files is preferred. Output options for cinema projection are also available.
The codec selected will determine the quality of the output. As much as possible, I push for clients to output to Prores 4444 when working with Quicktime, but again, depending on the workflow Prores 422 HQ or Prores 422 may be acceptable to the client. I can also output to a web-ready H.264 at half resolution straight from Resolve for client review.
The Field Rendering checkbox pertains to interlaced footage, not often encountered with progressive signals becoming the norm.
I can’t imagine a scenario where you’d want to stray from the Auto setting on Video/Data Level. Resolve recognizes the output format and sets the levels so you don’t have to. The last option in the Video section concerns data burn-in, which you can choose to disable here. You can set the parameters for the burn-in back in the Color tab.
Deliver > Advanced > Audio
Audio is pretty self-explanatory, with an option to include it in the export. You can also set the number of channels and bit depth. Sequential image outputs don’t have an audio output option.
Deliver > Advanced > File
In File, alternate filenames can be chosen, which can be great for organizational purposes. If unique filenames are not given, new renders can overwrite old renders. Setting custom filenames and choosing Render Unique Filenames can avoid this. This is always highlighted when performing a round-trip to an NLE. This section is where the destination path for the renders is chosen, as well as the render speed. Only an insane person would want to wait longer for renders, but the speed is an option here in case your rendering to a networked storage solution will slow others down.
The manual instructs that Resolve is capable of recognizing specific text tags to add pertinent information to each clip:
Description
Version name or number
Shot number in timeline
Deliver > Advanced > Options
One of the most essential considerations in the Options section is the Handles. Having unlocked cuts on the day of the color session is becoming the norm. It’s customary to add 24 or more frame handles to each shot in service of tweaking the edit further after the session. It’s not a bad idea to have handles in case the round-trip process is not exactly frame-accurate too.
Disable Edit and Input Sizing is something I use when I’m panning shots around the frame to compare them to stills in my gallery. In case I forget to move them back, this feature avoids rendering the shot nudged left or right. If you’re resizing something like Red footage into an HD frame, you’ll want to keep this option off.
Force Sizing to Highest Quality relates to an option in the preferences of the Image Scaling tab that scales the image based on a bilinear filter. Clicking this checkbox renders with the sharpest image-resizing filter inside Resolve. You may want to enable it when in doubt.
Force Debayer Resolution to Highest Quality is an option I’m glad had made it to the Deliver page several versions ago. Most often this will be relevant when working with Red footage at a lower debayer in the interest of smoothest playback. Make this checkbox active to render at Red’s premium full resolution.
Now that the Render Cache is behaving as it should, Use Render Cached Images can save render times by pulling from the cached images. Make sure you set caching resolution to your output resolution in General Options in the Preferences, since you can cache to lower-quality resolutions as well.
While your grades may look beautiful, they may not be optimal for pulling information in a visual effects context. If compositors prefer to pull information from the ungraded, raw footage, you can turn on Enable Flat Pass, which disables the grade when rendering. You can also set individual clips to render in this manner by right-clicking a shot in the timeline, selecting its version, and clicking to enable its flat pass. You can then select the radio button for With Clip Settings.
Place Clips in Separate Folders can assist in the automatic organization of image sequences by throwing each shot’s hundreds or thousands of images into their own folder. Can you imagine life with this workflow but without this feature? Preserve Levels retains the filepath of the clip, useful for preserving camera roll and reel information. Resolve can take advantage of the Alexa, Red and some DSLR cameras that capture footage with this folder structure.
The Use Commercial Workflow option also has the ability to place clips as well as reels in their own folders. When footage was still laid off to tape (gasp) an offset of a half hour was typically given to alternative scene passes, which can be input here. Ending this section are a couple of options for stereoscopic projects.
Deliver > Advanced > Additional Outputs
You can create more outputs at the very bottom. This is useful if the footage needs to go to two different departments. I could output my timeline to DPX sequences for the compositors, but the editor may want to post a rough conform of the color correct for client approval, so I make another output for Quicktime or MXF files. Here, it’ll be important to change the subfolder to organize the different sets of renders.
While some of these options may not encounter daily usage, it’s important to understand them for those atypical jobs that throw us a curveball and require their utilization. Understanding these options isn’t meant to clutter your mind with more technical knowledge. It’s about streamlining the conform process and preventing headaches.
Force debayer to highest quality что это
Tue Aug 23, 2016 6:18 pm
Today I tested a few renders with «Force sizing to highest quality» & «Force debayer to highest quality» in Davinci 12.5, first thing I noticed was constant crashing when rendering. It can’t seem to render anything with neat video with these options on.
Also uploaded frames from Inspire 1 RAW, and forcing high quality didn’t seem to affect that one, only the R3D’s. I didn’t notice an improvement with forcing high quality though. Anyone tried using this option and had similar results?
Can’t post links on here but I have frames up on dropbox.
Re: Export with «Force highest quality» yields worse image
Wed Aug 24, 2016 2:35 am
This has been discussed in past messages many times.
My opinion is that when it’s time to render, set the timeline for the original clip resolution of the material, so you’re not in the position of downrezzing and uprezzing. With camera material, make sure they’re all set at FULL resolution across the board.
Output resolution and sizing will hinge on what you actually want to see in the delivered materials, as described in the Image Scaling sections of the manual.
I’m not a fan of QuickTime LT for anything unless it’s very light-duty editing decisions on very low-powered computers. And if that’s the case, I’m not convinced image quality is a big concern there, particularly if it’s just to judge edit timing and performances.
Интерполяция цвета (дебайер) на CUDA
Цветные видеокамеры обычно устроены так, что на поверхности матрицы нанесена решётка из светофильтров, поэтому каждый пиксел регистрирует свет только определённого цвета (зелёного, красного или синего). Такая решётка называется байеровским шаблоном или просто байером (по имени создателя). Поэтому в каждом пикселе изображения есть точная информация только об одной цветовой компоненте, а значения остальных цветовых компонент можно восстановить с помощью информации о значениях других цветовых компонент в соседних пикселах.
Если цветовая гамма на изображении меняется непрерывно, то даже простые алгоритмы типа усреднения по соседним пикселам дают неплохой результат. Однако, если есть резкая граница с изменением цвета, то проявляются различные артефакты в виде ложных цветов, лесенки, размытия. Для устранения таких артефактов используют разнообразные и довольно сложные модели, описывающие поведение цветов и взаимосвязи их компонент на естественных изображениях.
Основные алгоритмы, используемые для восстановления цвета
Поскольку задача восстановления цвета после байеровского паттерна является локальной, то её можно эффективно распараллелить и оптимизировать для создания программного обеспечения на основе технологии CUDA. Такое решение позволит существенно поднять скорость цветовой интерполяции и даст возможность в онлайне обрабатывать большие потоки данных, например, от цветных скоростных видеокамер или от камер с очень большим разрешением. Библиотека Фаствидео СДК является высокопроизводительным решением на базе видеокарт NVIDIA для интерполяции данных от байеровскоих матриц и имеет несколько алгоритмов для решения этой задачи.
Что может дебайер на видеокарте
Основной результат: для 8-битного байеровского изображения с разрешением 1920×1080, загруженного в оперативную память компьютера, программа GPU Debayer восстанавливает цвет за 0,83 мс на видеокарте NVIDIA GeForce GTX 1080, что соответствует производительности более 2400 Мпикселов в секунду или частоте 1200 кадров в секунду при разрешении Full HD. Это в 200 раз быстрее аналогичного алгоритма AHD из библиотеки Intel IPP-7.1 на Core i7 2600 (3,4 ГГц).
Для тестирования использовались необработанные изображения, полученные от матрицы фотоаппарата или видеокамеры. У этих изображений на один пиксел приходится 1 байт данных, а после дебайера получаются цветные изображения с прежним разрешением, у которых на один пиксел приходится уже 3 байта, т.е. размер изображения увеличивается в 3 раза. В случае, если исходное изображение находится в памяти компьютера, то для выполнения вычислений на видеокарте нужно эти данные сначала передать в видеокарту через шину PCI-Express, затем провести расчёты, потом вернуть увеличившиеся в 3 раза данные по шине PCI-Express назад, в оперативную память компьютера. По сравнению с работой программ на центральном процессоре, при вычислениях на видеокарте получаются две дополнительные стадии по пересылке данных в видеокарту и обратно, которые вносят дополнительную задержку.
При использовании набора изображений Кодака, на котором обычно выполняется стандартное тестирование программ по восстановлению цвета, был получен результат 39 дБ, что очень неплохо, причём визуальное качество получилось очень хорошим. К примеру, самый качественный дебайер (алгоритм AHD) из библиотеки Intel IPP-7.1 на этом же наборе изображений даёт среднее значение порядка 37,4 дБ, а производительность алгоритма AHD при многопоточной реализации составляет 12 Мпикселов в секунду на процессоре Core i7 2600.
В демо-приложении Fast Debayer на данный момент реализованы три алгоритма дебайера: HQLI, DFPD и MG. Качество интерполяции при использовании этих алгоритмов заметно выше, чем при билинейной интерполяции, которая считается самым простым и самым быстрым алгоритмом.
В реальной ситуации производительность клиентских программных приложений по цветовой интерполяции ограничена скоростью загрузки данных от HDD/SSD/RAID, хотя значительное ослабление нагрузки на ЦПУ будет актуально всегда. Тем не менее, существуют промышленные серверные приложения, когда такая высокая скорость действительно требуется. Поток данных от видеокамер, в том числе и от высокоскоростных, может достигать гигапикселов в секунду и выше, поэтому производительность расчётов в таких случаях играет огромную роль. Для дальнейшего увеличения производительности можно использовать более мощные видеокарты, а также можно устанавливать в компьютер сразу несколько видеокарт, на которых одновременно будут выполняться вычисления.
Программа Fast Debayer распространяется бесплатно и её можно скачать по ссылке, приведенной ниже. Данная версия работает в Windows-7/8/10 (64-бит) с видеокартами NVIDIA, у которых CC (compute capability) не ниже 3.0. Для корректной работы желательно установить последние драйверы NVIDIA.
Fast Debayer on CUDA
Размер архива: 48.6 MB
Издатель: Fastvideo
ОС: Windows-7/8/10 (64-bit)
Лицензия: Freeware
Видеокарты NVIDIA Kepler, Maxwell, Pascal, Volta, Turing
Возможности дебайера на CUDA
Таким образом, показана возможность восстановления цвета с высокой производительностью и отличным качеством на графических картах NVIDIA по технологии CUDA. Производительность видеокарты GeForce GTX 1080 для цветовой интерполяции значительно выше, чем возможности самых последних CPU. Полученные данные говорят о том, что есть возможность использовать более сложные алгоритмы для быстрого и качественного восстановления цвета и обработки изображений на видеокартах.
Working with Venice Material in DaVinci Resolve
By: Alister Chapman
In this article I’m going to look at some of the do’s and don’ts of working with material shot on a Sony Venice camera. I’m not going to go in to details on how to edit or how to grade, but look at some of the different workflow options available to you and point out a few things that you need to know. In particular, if you are not interested in the color managed workflows, do please take a look at the section on “Changing the raw decode” for some information on selecting the right decoding options for Sony RAW and X-OCN material.
DaVinci Resolve is an incredibly powerful editing and grading tool. It is probably the most widely used color grading application in existence today, thanks in no small part to the fact that there is a free version that has almost all of the features of the paid version.
Getting footage into Resolve is very easy. You can either use the Media room (Resolve calls each page or section a “room”) to navigate to your content or you can drag and drop the content from the systems browser or finder directly into Resolve. For content on AXS and SxS cards you can simply drag and drop the entire main folder into Resolve and all of the clips on the card will become available in the Media room and Edit rooms.
Within Resolve there are different ways of managing the color science used for editing and grading. By default Resolve uses a conventional YRGB workflow that most people will already be familiar with. In this workflow X-OCN content will appear in your project converted to S-Log3 by default and will behave in a very similar manner to any XAVC or ProRes S-log3 content. You can grade this material manually or if you prefer, add a LUT to convert it to your desired output standard.
In addition Resolve offers the ability to work using a couple of different color managed workflows. There is DaVinci’s own “DaVinci YRGB Color Managed” workflow as well as the Academy of Motion Pictures “ACES” workflow. The different workflows are selected in the Project Settings “Color Management” page.
A Color Managed workflow differs from a conventional workflow in that the grading application takes care of any color space conversions internally. There is no need to use LUTs for example to convert from S-Log3 to Rec-709. This brings many potential benefits, especially if you are producing content that will be output in differing or multiple standards. Perhaps you are producing an HDR program but will also need to produce an SDR version.
My preferred color managed workflow is ACES. I find that ACES appears to handle multiple output options very well and as a result it is my “go-to” workflow for HDR productions where I will also need an SDR version. Within Resolve there are 2 versions of ACES, ACEScc and ACEScct. Both add a film style highlight roll off to the output that gives a very pleasing rendition of highlights and the brighter parts of a scene. ACEScct adds a toe that helps prevent blacks from getting crushed too easily and I believe most people will find they are able to more easily achieve a good looking final image with ACEScct. However if you wish to use ACES there is no hard and fast rule as to which to use and you should try both ACEScc and ACEScct and compare how the deep shadow areas of the image behave and choose the one you prefer.
With a color managed workflow you need to tell your grading software what you shot with and how you want it to be output. Once you have selected a color managed workflow in the Color Management page of the project settings you will also need to set the correct input and output options.
With the “DaVinci YRGB Color Managed” workflow, as well as the input and output options, you also need to define the color space that you wish to use for the project’s timeline.
For a Venice Project using DaVinci YRGB Color Managed you would normally select S-Log3/S-Gamut3.cine (The Gamut setting should match the Gamut selected in the camera) for the input color space. The output color space should be set to match your desired output color space – for example Rec.709 Gamma 2.4 for an SDR production or perhaps Rec.2100 ST2084 for an HDR10 production. For the timeline settings there are many options depending on how you wish to work. But generally, you will want to select a large Gamut/Gamma for the timeline so that you don’t limit the range that you work in. My suggestion is to use S-Log3/SGamut3.cine.
For a Venice Project using DaVinci ACEScc or ACEScct for SxS content you will want to set the input transform to “Sony S-Log3 SGamut3cine” (to match the gamut selected on the camera) and then for an SDR output you would select “Rec.709” or for an HDR10 output select “Rec2020 ST2084”.
For X-OCN material you should set the input transform to “No Input Transform”. This is very important – do NOT use the “Sony RAW” input transform. This is a legacy transform and no longer provides the optimum transformation for Sony Raw or X-OCN content. When working with Sony RAW or X-OCN, Resolve will read the metadata in the file and correctly set the input transform automatically.
Changing the Raw Decode (for X-OCN and Sony Raw).
By default DaVinci Resolve uses its own process to debayer Sony Raw and X-OCN content at half of its full resolution. This works well while editing or for most grading as the process is fast and needs less processing power than a full resolution decode.
However when you want to truly see the full quality of your content or when you come to render out your project it’s vital that you ensure that the decode is done at full resolution. The easiest way to do this is to make sure that the “Force debayer to highest quality” option is selected in the export video options under the “advanced” settings. Setting this option will force Resolve to use the “Full Res – Resolve” debayer option. However it’s worth noting that there is (in my opinion) an even better quality option.
If you go to the Resolve project settings and go to the “Camera Raw” settings and select “Sony RAW” under the “RAW Profile” tab you will see that you have several options.
If during the editing stage you are struggling to achieve full speed playback then you can try the “quarter-res” or “one-eighth-res” options as these require less processing power but will give a more degraded image.
If you have a fast grading system then you can try either the “Resolve-Full Res” option or the “Sony-Full-Res” option while you do your editing and grading. While I am editing or grading I tend to use the “Resolve-Full-Res” option as this gives a very good quality decode but is still very processor efficient. But once I get to the export stage I will set this to “Sony-Full-Res” as I find there is a small quality improvement over the Resolve decode. However the Sony processor is more processor intensive, so your renders will take a bit longer. If you do use the “Sony-Full-Res” option in the Project Settings, you should NOT select “Force debayer to highest quality” in the export settings as this uses the Resolve process.
What if you have material shot with multiple formats?
Handling multiple formats is easy. You can individually change the input transform for every clip in a project, whether using ACES or DaVinci YRGB Color Managed. In either the Media Room or Color Room you can right click on a clip and select the input transform settings to change the clip’s input transform. In the Media Room it is easy to select groups of clips to change the entire group to a new input transform by first selecting all the clips you wish to change, then right click and go to the input transform setting to change the transform for all the selected clips.
Fortunately, you can flip between the different raw decode settings whenever you want. You do not have to stick with one set of settings for every stage of the edit and grade. In terms of color, I have never observed any difference between the different raw decode settings. However, I do find that I get a very slightly cleaner final result by using the Sony Full Res decode over the Resolve Full Res decode.
Тестировщик больших и маленьких данных: тренды, теория, моя история
Всем привет, меня зовут Александр, и я Data Quality инженер, который занимается проверкой данных на предмет их качества. В этой статье речь пойдёт о том, как я к этому пришёл и почему в 2020 году это направление тестирования оказалось на гребне волны.
Мировой тренд
Сегодняшний мир переживает очередную технологическую революцию, одним из аспектов которой является использование всевозможными компаниями накопленных данных для раскрутки собственного маховика продаж, прибылей и пиара. Представляется, что именно наличие хороших (качественных) данных, а также умелых мозгов, которые смогут из них делать деньги (правильно обработать, визуализировать, построить модели машинного обучения и т. п.), стали сегодня ключом к успеху для многих. Если 15-20 лет назад плотной работой с накоплением данных и их монетизацией занимались в основном крупные компании, то сегодня это удел практически всех здравомыслящих.
В связи с этим несколько лет назад все порталы, посвящённые поиску работы по всему миру, стали переполняться вакансиями Data Scientists, так как все были уверены, что, получив себе в штат такого специалиста, можно построить супермодель машинного обучения, предсказать будущее и совершить «квантовый скачок» для компании. Со временем люди поняли, что такой подход почти нигде не работает, так как далеко не все данные, которые попадают в руки такого рода специалистам, пригодны для обучения моделей.
И начались запросы от Data Scientists: «Давайте купим ещё данных у этих и у тех.…», «Нам не хватает данных. », «Нужно ещё немного данных и желательно качественных. ». Основываясь на этих запросах, стали выстраиваться многочисленные взаимодействия между компаниями, владеющими тем или иным набором данных. Естественно, это потребовало технической организации этого процесса — подсоединиться к источнику данных, выкачать их, проверить, что они загружены в полном объёме и т. п. Количество таких процессов стало расти, и на сегодняшний день мы получили огромную потребность в другого рода специалистах — Data Quality инженерах — тех кто следил бы за потоком данных в системе (data pipelines), за качеством данных на входе и на выходе, делал бы выводы об их достаточности, целостности и прочих характеристиках.
Тренд на Data Quality инженеров пришёл к нам из США, где в разгар бушующей эры капитализма никто не готов проигрывать битву за данные. Ниже я представил скриншоты с двух самых популярных сайтов поиска работы в США: www.monster.com и www.dice.com — на которых отображены данные по состоянию на 17 марта 2020 года по количеству размещенных вакансий полученных, по ключевым словам: Data Quality и Data Scientist.
Очевидно, что эти профессии никоим образом не конкурируют друг с другом. Скриншотами я просто хотел проиллюстрировать текущую ситуацию на рынке труда в плане запросов на Data Quality инженеров, которых сейчас требуется сильно больше, чем Data Scientists.
В июне 2019 года EPAM, реагируя на потребности современного ИТ-рынка, выделил Data Quality направление в отдельную практику. Data Quality инженеры в ходе своей повседневной работы управляют данными, проверяют их поведение в новых условиях и системах, контролируют релевантность данных, их достаточность и актуальность. При всём при этом, в практическом смысле Data Quality инженеры действительно немного времени посвящают классическому функциональному тестированию, НО это сильно зависит от проекта (пример я приведу далее).
Обязанности Data Quality инженера не ограничиваются только рутинными ручными/автоматическими проверками на «nulls, count и sums» в таблицах БД, а требуют глубокого понимания бизнес нужд заказчика и, соответственно, способностей трансформировать имеющиеся данные в пригодную бизнес-информацию.
Теория Data Quality
Для того чтобы наиболее полно себе представить роль такого инженера, давайте разберёмся, что же такое Data Quality в теории.
Data Quality — один из этапов Data Management (целый мир, который мы оставим вам на самостоятельное изучение) и отвечает за анализ данных по следующим критериям:
Думаю, не стоит расшифровывать каждый из пунктов (в теории называются «data dimensions»), они вполне хорошо описаны на картинке. Но сам процесс тестирования не подразумевает строгое копирование этих признаков в тест-кейсы и их проверку. В Data Quality, как и в любом другом виде тестирования, необходимо прежде всего отталкиваться от требований по качеству данных, согласованных с участниками проекта, принимающими бизнес-решения.
В зависимости от проекта Data Quality инженер может выполнять разные функции: от обыкновенного тестировщика-автоматизатора с поверхностной оценкой качества данных, до человека, проводящего их глубокое профилирование по вышеуказанным признакам.
Очень подробное описание процессов Data Management, Data Quality и смежных отлично описаны в книге под названием «DAMA-DMBOK: Data Management Body of Knowledge: 2nd Edition». Очень рекомендую данную книгу как вводную в этой тематике (ссылку на нее найдете в конце статьи).
Моя история
В ИТ-индустрии я прошёл путь от Junior тестировщика в продуктовых компаниях до Lead Data Quality Engineer в компании EPAM. Уже примерно года через два работы в качестве тестировщика у меня было твёрдое убеждение в том, что я делал абсолютно все виды тестирования: регрессионное, функциональное, стрессовое, стабильности, безопасности, UI и т. д. — и перепробовал большое количество инструментов тестирования, поработав при этом на трёх языках программирования: Java, Scala, Python.
Оглядываясь назад, я понимаю, почему набор моих профессиональных навыков оказался столь разнообразен — я участвовал в проектах, завязанных на работе с данными, большими и маленькими. Именно это привело меня в мир большого количества инструментов и возможностей для роста.
Чтобы оценить многообразие инструментов и возможностей получения новых знаний и навыков, достаточно просто взглянуть на картинку ниже, на которой изображены самые популярные из них в мире «Data & AI».
Такого рода иллюстрации составляет ежегодно один из известных венчурных капиталистов Matt Turck, выходец из разработки ПО. Вот ссылка на его блог и фирму венчурного капитала, где он работает партнёром.
Особенно быстро я профессионально рос, когда я был единственным тестировщиком на проекте, или, по крайней мере, в начале проекта. Именно в такой момент приходится отвечать за весь процесс тестирования, и у тебя нет возможности отступить, только вперёд. Поначалу это пугало, однако теперь мне очевидны все плюсы такого испытания:
Пример конкретного проекта
К сожалению, в силу обязательств о неразглашении я не могу подробно рассказывать о проектах, на которых я работал, однако приведу примеры типичных задач Data Quality Engineer на одном из проектов.
Суть проекта — реализовать платформу для подготовки данных для обучения на их основе моделей машинного обучения. Заказчиком была крупная фармацевтическая компания из США. Технически это был кластер Kubernetes, поднимающийся на AWS EC2 инстансах, с несколькими микросервисами и лежащим в основе Open Source проектом компании EPAM — Legion, адаптированным под нужды конкретного заказчика (сейчас проект перерожден в odahu). ETL-процессы были организованы при помощи Apache Airflow и перемещали данные из SalesForce системы заказчика в AWS S3 Buckets. Далее на платформу деплоился докер образ модели машинного обучения, которая обучалась на свежих данных и по REST API интерфейсу выдавала предсказания, интересующие бизнес и решающие конкретные задачи.
Визуально всё выглядело примерно так:
Функционального тестирования на этом проекте было предостаточно, а учитывая скорость разработки фичей и необходимости поддержания темпов релизного цикла (двухнедельные спринты), необходимо было сразу задумываться об автоматизации тестирования самых критичных узлов системы. Большая часть самой платформы с Kubernetes основой покрывалась автотестами, реализованными на Robot Framework + Python, но поддерживать и расширять их также было нужно. Кроме того, для удобства заказчика, был создан GUI для управления моделями машинного обучения, задеплоенными на кластер, а также возможность указать откуда и куда необходимо перенести данные для обучения моделей. Это обширное дополнение повлекло за собой расширение автоматизированных функциональных проверок, которые по большей части делались через REST API вызовы и небольшое количество end-2-end UI-тестов. Примерно на экваторе всего этого движения к нам присоединился ручной тестировщик, который отлично справлялся с приёмочным тестированием версий продукта и общением с заказчиком по поводу приёмки очередного релиза. Кроме того, за счёт появления нового специалиста мы смогли документировать нашу работу и добавить несколько очень важных ручных проверок, которые было трудно сразу автоматизировать.
И наконец, после того как мы добились стабильности от платформы и GUI надстройкой над ней мы приступили к построению ETL pipelines при помощи Apache Airflow DAGs. Автоматизированная проверка качества данных осуществлялась при помощи написания специальных Airflow DAGs которые проверяли данные по результатам работы ETL процесса. В рамках этого проекта нам повезло, и заказчик предоставил нам доступ к обезличенным наборам данных, на которых мы и тестировались. Проверяли данные построчно на соответствие типам, наличие битых данных, общее количество записей до и после, сравнение произведенных ETL-процессом преобразований по агрегации, изменению названий колонок и прочего. Кроме того, эти проверки были масштабированы на разные источники данных, например кроме SalesForce ещё и на MySQL.
Проверки конечного качества данных осуществлялись уже на уровне S3, где они хранились и были в состоянии ready-to-use для обучения моделей машинного обучения. Для получения данных из конечного CSV файла, лежащего на S3 Bucket и их валидации, был написан код с использованием boto3 клиента.
Также со стороны заказчика было требование на хранение части данных в одном S3 Bucket’e, части в другом. Для этого также потребовалось писать дополнительные проверки, контролирующие достоверность такой сортировки.
Обобщённый опыт по другим проектам
Пример самого обобщённого перечня активностей Data Quality инженера:
Инструменты
Одной из техник такого контроля за данными может быть организация цепных проверок на каждой стадии обработки данных, так называемый в литературе «data chain» — контроль данных от источника до пункта финального использования. Такого рода проверки чаще всего реализуются за счёт написания проверяющих SQL-запросов. Понятное дело, что такие запросы должны быть максимально легковесными и проверяющими отдельные куски качества данных (tables metadata, blank lines, NULLs, Errors in syntax — другие требуемые проверки атрибуты).
В случае регрессионного тестирования, в котором используются уже готовые (неизменяемые\незначительно изменяемые) наборы данных, в коде автотестов могут храниться уже готовые шаблоны проверки данных на соответствие качеству (описания ожидаемых метаданных таблиц; строчных выборочных объектов, которые могут выбираться случайно в ходе теста, и прочее).
Также в ходе тестирования приходится писать тестовые ETL-процессы, при помощи таких фреймворков как Apache Airflow, Apache Spark или вовсе black-box cloud инструмент типа GCP Dataprep, GCP Dataflow и прочее. Это обстоятельство заставляет тест-инженера погрузиться в принципы работы вышеуказанных инструментов и ещё более эффективно как проводить функциональное тестирование (например, существующих на проекте ETL-процессов), так и использовать их для проверки данных. В частности, для Apache Airflow имеются уже готовые операторы для работы с популярными аналитическими базами данных, например GCP BigQuery. Самый базовый пример его использования уже изложен тут, поэтому не буду повторяться.
Кроме готовых решений, никто не запрещает вам реализовывать свои техники и инструменты. Это не только будет пользой для проекта, но и для самого Data Quality Engineer, который тем самым прокачает свой технический кругозор и навыки кодирования.
Как это работает на реальном проекте
Хорошей иллюстрацией последних абзацев про «data chain», ETL и вездесущие проверки является следующий процесс с одного из реальных проектов:
Здесь во входную «воронку» нашей системы попадают разные данные (естественно, нами и подготовленные): валидные, невалидные, смешанные и т. п., потом они фильтруются и попадают в промежуточное хранилище, затем их снова ждёт ряд преобразований и помещение в конечное хранилище, из которого, в свою очередь, и будет производится аналитика, построение витрин данных и поиск бизнес-инсайтов. В такой системе мы, не проверяя функционально работу ETL-процессов, фокусируемся на качестве данных до и после преобразований, а также на выходе в аналитику.
Резюмируя вышесказанное, вне зависимости от мест, где я работал, везде был вовлечён в Data-проекты, которые объединяли следующие черты:
Отличительные особенности Data Quality тестирования
Кроме того, для себя я выделил следующие (сразу оговорюсь ОЧЕНЬ обобщённые и исключительно субъективные) отличительные черты тестирования в Data (Big Data) проектах (системах) и других направлениях:

Основные алгоритмы, используемые для восстановления цвета
Что может дебайер на видеокарте








