Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add test if dataset samples can be collated #5233

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

pmeier
Copy link
Collaborator

@pmeier pmeier commented Jan 20, 2022

The following datasets currently fail the test:

  • WIDERFace
  • Kitti
  • Sintel
  • KittiFlow
  • HD1K
  • FER2013
  • CLEVRClassification
  • OxfordIIITPet

They all fail since they return None in at least one configuration and default_collate does not support it. This in turn means that the datasets with the offending configurations cannot be used in a torch.utils.data.DataLoader(dataset) without passing a custom collate_fn.

cc @pmeier

@facebook-github-bot
Copy link

facebook-github-bot commented Jan 20, 2022

💊 CI failures summary and remediations

As of commit 18799db (more details on the Dr. CI page):



🕵️ 9 new failures recognized by patterns

The following CI failures do not appear to be due to upstream breakages:

See CircleCI build unittest_windows_cpu_py3.8 (1/9)

Step: "Run tests" (full log | diagnosis details | 🔁 rerun)

c:\users\circleci\project\torchvision\io\video....\\circleci\\AppData\\Local\\Temp\\tmpbf59s2ab.mp4'
test/test_transforms.py: 2 warnings
  C:\Users\circleci\project\env\lib\site-packages\PIL\Image.py:1651: DeprecationWarning: an integer is required (got type float).  Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python.
    return self._new(self.im.point(lut, mode))

test/test_image.py::test_decode_png[L-ImageReadMode.GRAY-palette_pytorch.png]
test/test_image.py::test_decode_png[RGB-ImageReadMode.RGB-palette_pytorch.png]
  C:\Users\circleci\project\env\lib\site-packages\PIL\Image.py:945: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images
    warnings.warn(

test/test_io.py::TestVideo::test_read_video_timestamps_corrupted_file
  c:\users\circleci\project\torchvision\io\video.py:406: RuntimeWarning: Failed to open container for C:\Users\circleci\AppData\Local\Temp\tmpbf59s2ab.mp4; Caught error: [Errno 13] Permission denied: 'C:\\Users\\circleci\\AppData\\Local\\Temp\\tmpbf59s2ab.mp4'
    warnings.warn(msg, RuntimeWarning)

test/test_models.py::test_memory_efficient_densenet[densenet121]
test/test_models.py::test_memory_efficient_densenet[densenet169]
test/test_models.py::test_memory_efficient_densenet[densenet201]
test/test_models.py::test_memory_efficient_densenet[densenet161]
  C:\Users\circleci\project\env\lib\site-packages\torch\autocast_mode.py:162: UserWarning: User provided device_type of 'cuda', but CUDA is not available. Disabling
    warnings.warn('User provided device_type of \'cuda\', but CUDA is not available. Disabling')

test/test_models.py::test_inception_v3_eval

See CircleCI build unittest_windows_cpu_py3.9 (2/9)

Step: "Run tests" (full log | diagnosis details | 🔁 rerun)

c:\users\circleci\project\torchvision\io\video....\\circleci\\AppData\\Local\\Temp\\tmpqp93lpqc.mp4'
test/test_transforms.py: 2 warnings
  C:\Users\circleci\project\env\lib\site-packages\PIL\Image.py:1651: DeprecationWarning: an integer is required (got type float).  Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python.
    return self._new(self.im.point(lut, mode))

test/test_image.py::test_decode_png[L-ImageReadMode.GRAY-palette_pytorch.png]
test/test_image.py::test_decode_png[RGB-ImageReadMode.RGB-palette_pytorch.png]
  C:\Users\circleci\project\env\lib\site-packages\PIL\Image.py:945: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images
    warnings.warn(

test/test_io.py::TestVideo::test_read_video_timestamps_corrupted_file
  c:\users\circleci\project\torchvision\io\video.py:406: RuntimeWarning: Failed to open container for C:\Users\circleci\AppData\Local\Temp\tmpqp93lpqc.mp4; Caught error: [Errno 13] Permission denied: 'C:\\Users\\circleci\\AppData\\Local\\Temp\\tmpqp93lpqc.mp4'
    warnings.warn(msg, RuntimeWarning)

test/test_models.py::test_memory_efficient_densenet[densenet121]
test/test_models.py::test_memory_efficient_densenet[densenet169]
test/test_models.py::test_memory_efficient_densenet[densenet201]
test/test_models.py::test_memory_efficient_densenet[densenet161]
  C:\Users\circleci\project\env\lib\site-packages\torch\autocast_mode.py:162: UserWarning: User provided device_type of 'cuda', but CUDA is not available. Disabling
    warnings.warn('User provided device_type of \'cuda\', but CUDA is not available. Disabling')

test/test_models.py::test_inception_v3_eval

See CircleCI build unittest_windows_cpu_py3.7 (3/9)

Step: "Run tests" (full log | diagnosis details | 🔁 rerun)

c:\users\circleci\project\torchvision\io\video....\\circleci\\AppData\\Local\\Temp\\tmp5cympr2l.mp4'
test/test_datasets_video_utils.py::TestVideo::test_video_clips_custom_fps
  c:\users\circleci\project\torchvision\datasets\video_utils.py:218: UserWarning: There aren't enough frames in the current video to get a clip for the given clip length and frames between clips. The video (and potentially others) will be skipped.
    "There aren't enough frames in the current video to get a clip for the given clip length and "

test/test_image.py::test_decode_png[L-ImageReadMode.GRAY-palette_pytorch.png]
test/test_image.py::test_decode_png[RGB-ImageReadMode.RGB-palette_pytorch.png]
  C:\Users\circleci\project\env\lib\site-packages\PIL\Image.py:946: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images
    "Palette images with Transparency expressed in bytes should be "

test/test_io.py::TestVideo::test_read_video_timestamps_corrupted_file
  c:\users\circleci\project\torchvision\io\video.py:406: RuntimeWarning: Failed to open container for C:\Users\circleci\AppData\Local\Temp\tmp5cympr2l.mp4; Caught error: [Errno 13] Permission denied: 'C:\\Users\\circleci\\AppData\\Local\\Temp\\tmp5cympr2l.mp4'
    warnings.warn(msg, RuntimeWarning)

test/test_models.py::test_memory_efficient_densenet[densenet121]
test/test_models.py::test_memory_efficient_densenet[densenet169]
test/test_models.py::test_memory_efficient_densenet[densenet201]
test/test_models.py::test_memory_efficient_densenet[densenet161]
  C:\Users\circleci\project\env\lib\site-packages\torch\autocast_mode.py:162: UserWarning: User provided device_type of 'cuda', but CUDA is not available. Disabling
    warnings.warn('User provided device_type of \'cuda\', but CUDA is not available. Disabling')

test/test_models.py::test_inception_v3_eval

See CircleCI build unittest_linux_gpu_py3.8 (4/9)

Step: "Run tests" (full log | diagnosis details | 🔁 rerun)

test/test_utils.py::test_draw_keypoints_errors �[33mSKIPPED�[0m (We're in a C...)�[31m [ 99%]�[0m
test/test_utils.py::test_draw_segmentation_masks[1-blue] �[33mSKIPPED�[0m (We...)�[31m [ 99%]�[0m

test/test_utils.py::test_draw_segmentation_masks[1-#FF00FF] �[33mSKIPPED�[0m�[31m      [ 99%]�[0m

test/test_utils.py::test_draw_segmentation_masks[1-colors3] �[33mSKIPPED�[0m�[31m      [ 99%]�[0m

test/test_utils.py::test_draw_segmentation_masks[1-colors4] �[33mSKIPPED�[0m�[31m      [ 99%]�[0m

test/test_utils.py::test_draw_segmentation_masks[1-colors5] �[33mSKIPPED�[0m�[31m      [ 99%]�[0m

test/test_utils.py::test_draw_segmentation_masks_errors �[33mSKIPPED�[0m (We'...)�[31m [ 99%]�[0m

test/test_utils.py::test_draw_keypoints_vanilla �[33mSKIPPED�[0m (We're in a ...)�[31m [ 99%]�[0m

test/test_utils.py::test_draw_keypoints_colored[red] �[33mSKIPPED�[0m (We're ...)�[31m [ 99%]�[0m

test/test_utils.py::test_draw_keypoints_colored[#FF00FF] �[33mSKIPPED�[0m (We...)�[31m [ 99%]�[0m

test/test_utils.py::test_draw_keypoints_colored[colors2] �[33mSKIPPED�[0m (We...)�[31m [ 99%]�[0m

test/test_utils.py::test_draw_keypoints_errors �[33mSKIPPED�[0m (We're in a C...)�[31m [ 99%]�[0m

test/test_video_gpu_decoder.py::TestVideoGPUDecoder::test_frame_reading �[33mSKIPPED�[0m�[31m [ 99%]�[0m

test/test_video_reader.py::TestVideoReader::test_stress_test_read_video_from_file �[33mSKIPPED�[0m�[31m [ 99%]�[0m

test/test_video_reader.py::TestVideoReader::test_read_video_from_file �[33mSKIPPED�[0m�[31m [ 99%]�[0m

test/test_video_reader.py::TestVideoReader::test_read_video_from_file_read_single_stream_only �[33mSKIPPED�[0m�[31m [ 99%]�[0m

test/test_video_reader.py::TestVideoReader::test_read_video_from_file_rescale_min_dimension �[33mSKIPPED�[0m�[31m [ 99%]�[0m

test/test_video_reader.py::TestVideoReader::test_read_video_from_file_rescale_max_dimension �[33mSKIPPED�[0m�[31m [ 99%]�[0m

test/test_video_reader.py::TestVideoReader::test_read_video_from_file_rescale_both_min_max_dimension �[33mSKIPPED�[0m�[31m [ 99%]�[0m

test/test_video_reader.py::TestVideoReader::test_read_video_from_file_rescale_width �[33mSKIPPED�[0m�[31m [ 99%]�[0m

test/test_video_reader.py::TestVideoReader::test_read_video_from_file_rescale_height �[33mSKIPPED�[0m�[31m [ 99%]�[0m

test/test_video_reader.py::TestVideoReader::test_read_video_from_file_rescale_width_and_height �[33mSKIPPED�[0m�[31m [ 99%]�[0m

See CircleCI build unittest_linux_cpu_py3.7 (5/9)

Step: "Run tests" (full log | diagnosis details | 🔁 rerun)

/root/project/torchvision/io/video.py:406: Runt...log: [mov,mp4,m4a,3gp,3g2,mj2] moov atom not found
test/test_image.py::test_decode_png[L-ImageReadMode.GRAY-palette_pytorch.png]
test/test_image.py::test_decode_png[RGB-ImageReadMode.RGB-palette_pytorch.png]
  /root/project/env/lib/python3.7/site-packages/PIL/Image.py:946: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images
    "Palette images with Transparency expressed in bytes should be "

test/test_io.py::TestVideo::test_probe_video_from_memory
  /root/project/torchvision/io/_video_opt.py:423: UserWarning: The given buffer is not writable, and PyTorch does not support non-writable tensors. This means you can write to the underlying (supposedly non-writable) buffer using the tensor. You may want to copy the buffer to protect its data or make it writable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at  /opt/conda/conda-bld/pytorch_1642552271656/work/torch/csrc/utils/tensor_new.cpp:998.)
    video_data = torch.frombuffer(video_data, dtype=torch.uint8)

test/test_io.py::TestVideo::test_read_video_timestamps_corrupted_file
  /root/project/torchvision/io/video.py:406: RuntimeWarning: Failed to open container for /tmp/tmpeef1ma85.mp4; Caught error: [Errno 1094995529] Invalid data found when processing input: '/tmp/tmpeef1ma85.mp4'; last error log: [mov,mp4,m4a,3gp,3g2,mj2] moov atom not found
    warnings.warn(msg, RuntimeWarning)

test/test_models.py::test_memory_efficient_densenet[densenet121]
test/test_models.py::test_memory_efficient_densenet[densenet169]
test/test_models.py::test_memory_efficient_densenet[densenet201]
test/test_models.py::test_memory_efficient_densenet[densenet161]
  /root/project/env/lib/python3.7/site-packages/torch/autocast_mode.py:162: UserWarning: User provided device_type of 'cuda', but CUDA is not available. Disabling
    warnings.warn('User provided device_type of \'cuda\', but CUDA is not available. Disabling')

test/test_models.py::test_inception_v3_eval

See CircleCI build unittest_linux_cpu_py3.9 (6/9)

Step: "Run tests" (full log | diagnosis details | 🔁 rerun)

/root/project/torchvision/io/video.py:406: Runt...log: [mov,mp4,m4a,3gp,3g2,mj2] moov atom not found
test/test_transforms.py: 2 warnings
  /root/project/env/lib/python3.9/site-packages/PIL/Image.py:1651: DeprecationWarning: an integer is required (got type float).  Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python.
    return self._new(self.im.point(lut, mode))

test/test_image.py::test_decode_png[L-ImageReadMode.GRAY-palette_pytorch.png]
test/test_image.py::test_decode_png[RGB-ImageReadMode.RGB-palette_pytorch.png]
  /root/project/env/lib/python3.9/site-packages/PIL/Image.py:945: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images
    warnings.warn(

test/test_io.py::TestVideo::test_read_video_timestamps_corrupted_file
  /root/project/torchvision/io/video.py:406: RuntimeWarning: Failed to open container for /tmp/tmp5sceog5x.mp4; Caught error: [Errno 1094995529] Invalid data found when processing input: '/tmp/tmp5sceog5x.mp4'; last error log: [mov,mp4,m4a,3gp,3g2,mj2] moov atom not found
    warnings.warn(msg, RuntimeWarning)

test/test_models.py::test_memory_efficient_densenet[densenet121]
test/test_models.py::test_memory_efficient_densenet[densenet169]
test/test_models.py::test_memory_efficient_densenet[densenet201]
test/test_models.py::test_memory_efficient_densenet[densenet161]
  /root/project/env/lib/python3.9/site-packages/torch/autocast_mode.py:162: UserWarning: User provided device_type of 'cuda', but CUDA is not available. Disabling
    warnings.warn('User provided device_type of \'cuda\', but CUDA is not available. Disabling')

test/test_models.py::test_inception_v3_eval

See CircleCI build unittest_macos_cpu_py3.7 (7/9)

Step: "Run tests" (full log | diagnosis details | 🔁 rerun)

/Users/distiller/project/torchvision/io/video.p...log: [mov,mp4,m4a,3gp,3g2,mj2] moov atom not found
test/test_datasets_video_utils.py::TestVideo::test_video_clips_custom_fps
  /Users/distiller/project/torchvision/datasets/video_utils.py:218: UserWarning: There aren't enough frames in the current video to get a clip for the given clip length and frames between clips. The video (and potentially others) will be skipped.
    "There aren't enough frames in the current video to get a clip for the given clip length and "

test/test_image.py::test_decode_png[L-ImageReadMode.GRAY-palette_pytorch.png]
test/test_image.py::test_decode_png[RGB-ImageReadMode.RGB-palette_pytorch.png]
  /Users/distiller/project/env/lib/python3.7/site-packages/PIL/Image.py:946: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images
    "Palette images with Transparency expressed in bytes should be "

test/test_io.py::TestVideo::test_read_video_timestamps_corrupted_file
  /Users/distiller/project/torchvision/io/video.py:406: RuntimeWarning: Failed to open container for /var/folders/6y/gy9gggt14379c_k39vwb50lc0000gn/T/tmp1xec2f29.mp4; Caught error: [Errno 1094995529] Invalid data found when processing input: '/var/folders/6y/gy9gggt14379c_k39vwb50lc0000gn/T/tmp1xec2f29.mp4'; last error log: [mov,mp4,m4a,3gp,3g2,mj2] moov atom not found
    warnings.warn(msg, RuntimeWarning)

test/test_models.py::test_memory_efficient_densenet[densenet121]
test/test_models.py::test_memory_efficient_densenet[densenet169]
test/test_models.py::test_memory_efficient_densenet[densenet201]
test/test_models.py::test_memory_efficient_densenet[densenet161]
  /Users/distiller/project/env/lib/python3.7/site-packages/torch/autocast_mode.py:162: UserWarning: User provided device_type of 'cuda', but CUDA is not available. Disabling
    warnings.warn('User provided device_type of \'cuda\', but CUDA is not available. Disabling')

test/test_models.py::test_inception_v3_eval

See CircleCI build unittest_linux_cpu_py3.8 (8/9)

Step: "Run tests" (full log | diagnosis details | 🔁 rerun)

/root/project/torchvision/io/video.py:406: Runt...log: [mov,mp4,m4a,3gp,3g2,mj2] moov atom not found
test/test_image.py::test_decode_png[L-ImageReadMode.GRAY-palette_pytorch.png]
test/test_image.py::test_decode_png[RGB-ImageReadMode.RGB-palette_pytorch.png]
  /root/project/env/lib/python3.8/site-packages/PIL/Image.py:945: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images
    warnings.warn(

test/test_io.py::TestVideo::test_probe_video_from_memory
  /root/project/torchvision/io/_video_opt.py:423: UserWarning: The given buffer is not writable, and PyTorch does not support non-writable tensors. This means you can write to the underlying (supposedly non-writable) buffer using the tensor. You may want to copy the buffer to protect its data or make it writable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at  /opt/conda/conda-bld/pytorch_1642552270100/work/torch/csrc/utils/tensor_new.cpp:998.)
    video_data = torch.frombuffer(video_data, dtype=torch.uint8)

test/test_io.py::TestVideo::test_read_video_timestamps_corrupted_file
  /root/project/torchvision/io/video.py:406: RuntimeWarning: Failed to open container for /tmp/tmpmyb1lz_m.mp4; Caught error: [Errno 1094995529] Invalid data found when processing input: '/tmp/tmpmyb1lz_m.mp4'; last error log: [mov,mp4,m4a,3gp,3g2,mj2] moov atom not found
    warnings.warn(msg, RuntimeWarning)

test/test_models.py::test_memory_efficient_densenet[densenet121]
test/test_models.py::test_memory_efficient_densenet[densenet169]
test/test_models.py::test_memory_efficient_densenet[densenet201]
test/test_models.py::test_memory_efficient_densenet[densenet161]
  /root/project/env/lib/python3.8/site-packages/torch/autocast_mode.py:162: UserWarning: User provided device_type of 'cuda', but CUDA is not available. Disabling
    warnings.warn('User provided device_type of \'cuda\', but CUDA is not available. Disabling')

test/test_models.py::test_inception_v3_eval

See CircleCI build unittest_windows_gpu_py3.8 (9/9)

Step: "Run tests" (full log | diagnosis details | 🔁 rerun)

test/test_utils.py::test_draw_keypoints_errors SKIPPED (We're in a C...) [ 99%]
test/test_utils.py::test_draw_segmentation_masks[1-blue] SKIPPED (We...) [ 99%]
test/test_utils.py::test_draw_segmentation_masks[1-#FF00FF] SKIPPED      [ 99%]
test/test_utils.py::test_draw_segmentation_masks[1-colors3] SKIPPED      [ 99%]
test/test_utils.py::test_draw_segmentation_masks[1-colors4] SKIPPED      [ 99%]
test/test_utils.py::test_draw_segmentation_masks[1-colors5] SKIPPED      [ 99%]
test/test_utils.py::test_draw_segmentation_masks_errors SKIPPED (We'...) [ 99%]
test/test_utils.py::test_draw_keypoints_vanilla SKIPPED (We're in a ...) [ 99%]
test/test_utils.py::test_draw_keypoints_colored[red] SKIPPED (We're ...) [ 99%]
test/test_utils.py::test_draw_keypoints_colored[#FF00FF] SKIPPED (We...) [ 99%]
test/test_utils.py::test_draw_keypoints_colored[colors2] SKIPPED (We...) [ 99%]
test/test_utils.py::test_draw_keypoints_errors SKIPPED (We're in a C...) [ 99%]
test/test_video_gpu_decoder.py::TestVideoGPUDecoder::test_frame_reading SKIPPED [ 99%]
test/test_video_reader.py::TestVideoReader::test_stress_test_read_video_from_file SKIPPED [ 99%]
test/test_video_reader.py::TestVideoReader::test_read_video_from_file SKIPPED [ 99%]
test/test_video_reader.py::TestVideoReader::test_read_video_from_file_read_single_stream_only SKIPPED [ 99%]
test/test_video_reader.py::TestVideoReader::test_read_video_from_file_rescale_min_dimension SKIPPED [ 99%]
test/test_video_reader.py::TestVideoReader::test_read_video_from_file_rescale_max_dimension SKIPPED [ 99%]
test/test_video_reader.py::TestVideoReader::test_read_video_from_file_rescale_both_min_max_dimension SKIPPED [ 99%]
test/test_video_reader.py::TestVideoReader::test_read_video_from_file_rescale_width SKIPPED [ 99%]
test/test_video_reader.py::TestVideoReader::test_read_video_from_file_rescale_height SKIPPED [ 99%]
test/test_video_reader.py::TestVideoReader::test_read_video_from_file_rescale_width_and_height SKIPPED [ 99%]

1 failure not recognized by patterns:

Job Step Action
CircleCI unittest_macos_cpu_py3.8 Run tests 🔁 rerun

🚧 1 ongoing upstream failure:

These were probably caused by upstream breakages that are not fixed yet.


This comment was automatically generated by Dr. CI (expand for details).

Please report bugs/suggestions to the (internal) Dr. CI Users group.

Click here to manually regenerate this comment.

@NicolasHug
Copy link
Member

NicolasHug commented Jan 20, 2022

Summing up what we discussed with Philip offline:

The issue here is that some of our datasets (those above) can have None as part of their return, typically for test sets where we often return (img, None) because the target isn't known.

The default collate function of DataLoader cannot handle None, leading to failures

dataset = datasets.CLEVRClassification("~/datasets", split="test", transform=transforms.PILToTensor())
data_loader = DataLoader(dataset, batch_size=3)
TypeError: default_collate: batch must contain tensors, numpy arrays, numbers, dicts or lists; found <class 'NoneType'>

A decent workaround for these right now is to write a custom collate function that doesn't try to wrap Nones into a tensor, e.g.

def collate_fn(batch):
    imgs = [img for (img, _) in batch]
    return torch.stack(imgs), [None] * len(batch)

We'll reach out to the torchdata team to see what they think of this. Perhaps the default collate function could start accepting None values.

@pmeier
Copy link
Collaborator Author

pmeier commented Jan 20, 2022

cc @ejguan @NivekT @VitalyFedyunin

@ejguan
Copy link
Contributor

ejguan commented Jan 21, 2022

QQ: If there is no target in test set, why not emit target and only keep the img?

@NicolasHug
Copy link
Member

It's because we want to keep the returned types / length consistent across splits. Otherwise users need to unpack the returned values and check whether there is a target or not, which can be a cumbersome

@ejguan
Copy link
Contributor

ejguan commented Jan 21, 2022

It's because we want to keep the returned types / length consistent across splits. Otherwise users need to unpack the returned values and check whether there is a target or not, which can be a cumbersome

Makes sense. And, what would we expect in the batch before collate if target is None?

  • [(img0, None), (img1, None) ...]
  • [img0, img1, ...]

And, we need a custom map (collate) function for either case.
Case 1:

def collate_fn(batch):
    imgs, targets = tuple(zip(*batch))
    return default_collate(imgs), None

Case 2:

def collate_fn(batch):
    return default_collate(batch), None

I'm using None to represent collated target because the collated images is a single instance of Tensor.

@pmeier
Copy link
Collaborator Author

pmeier commented Jan 24, 2022

And, what would we expect in the batch before collate if target is None?

That is the root of the problem: we cannot say past [dict(...), dict(...), ...]. It might be dict(label=None), dict(labels=[None, None]) or a even deeper nested container. This is why I said that default_collate is to inflexible. Let me propose a an alternative solution that makes solving our use case trivial.

@pmeier
Copy link
Collaborator Author

pmeier commented Jan 24, 2022

I've summarized my proposal here. Please have a look @NicolasHug, @ejguan, @NivekT, @VitalyFedyunin

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants