GithubHelp home page GithubHelp logo

libffcv / ffcv Goto Github PK

View Code? Open in Web Editor NEW
2.8K 20.0 179.0 3.37 MB

FFCV: Fast Forward Computer Vision (and other ML workloads!)

Home Page: https://ffcv.io

License: Apache License 2.0

Python 97.68% C++ 1.88% Shell 0.06% Dockerfile 0.37%
machine-learning data-science pytorch

ffcv's Introduction

Fast Forward Computer Vision: train models at a fraction of the cost with accelerated data loading!

[install] [quickstart] [features] [docs] [support slack] [homepage] [paper]
Maintainers: Guillaume Leclerc, Andrew Ilyas and Logan Engstrom

ffcv is a drop-in data loading system that dramatically increases data throughput in model training:

Keep your training algorithm the same, just replace the data loader! Look at these speedups:

ffcv also comes prepacked with fast, simple code for standard vision benchmarks:

Installation

Linux

conda create -y -n ffcv python=3.9 cupy pkg-config libjpeg-turbo opencv pytorch torchvision cudatoolkit=11.3 numba -c pytorch -c conda-forge
conda activate ffcv
pip install ffcv

Troubleshooting note 1: if the above commands result in a package conflict error, try running conda config --env --set channel_priority flexible in the environment and rerunning the installation command.

Troubleshooting note 2: on some systems (but rarely), you'll need to add the compilers package to the first command above.

Troubleshooting note 3: courtesy of @kschuerholt, here is a Dockerfile that may help with conda-free installation

Windows

  • Install opencv4
    • Add ..../opencv/build/x64/vc15/bin to PATH environment variable
  • Install libjpeg-turbo, download libjpeg-turbo-x.x.x-vc64.exe, not gcc64
    • Add ..../libjpeg-turbo64/bin to PATH environment variable
  • Install pthread, download last release.zip
    • After unzip, rename Pre-build.2 folder to pthread
    • Open pthread/include/pthread.h, and add the code below to the top of the file.
    #define HAVE_STRUCT_TIMESPEC
    • Add ..../pthread/dll to PATH environment variable
  • Install cupy depending on your CUDA Toolkit version.
  • pip install ffcv

Citation

If you use FFCV, please cite it as:

@inproceedings{leclerc2023ffcv,
    author = {Guillaume Leclerc and Andrew Ilyas and Logan Engstrom and Sung Min Park and Hadi Salman and Aleksander Madry},
    title = {{FFCV}: Accelerating Training by Removing Data Bottlenecks},
    year = {2023},
    booktitle = {Computer Vision and Pattern Recognition (CVPR)},
    note = {\url{https://github.com/libffcv/ffcv/}. commit xxxxxxx}
}

(Make sure to replace xxxxxxx above with the hash of the commit used!)

Quickstart

Accelerate any learning system with ffcv. First, convert your dataset into ffcv format (ffcv converts both indexed PyTorch datasets and WebDatasets):

from ffcv.writer import DatasetWriter
from ffcv.fields import RGBImageField, IntField

# Your dataset (`torch.utils.data.Dataset`) of (image, label) pairs
my_dataset = make_my_dataset()
write_path = '/output/path/for/converted/ds.beton'

# Pass a type for each data field
writer = DatasetWriter(write_path, {
    # Tune options to optimize dataset size, throughput at train-time
    'image': RGBImageField(max_resolution=256),
    'label': IntField()
})

# Write dataset
writer.from_indexed_dataset(my_dataset)

Then replace your old loader with the ffcv loader at train time (in PyTorch, no other changes required!):

from ffcv.loader import Loader, OrderOption
from ffcv.transforms import ToTensor, ToDevice, ToTorchImage, Cutout
from ffcv.fields.decoders import IntDecoder, RandomResizedCropRGBImageDecoder

# Random resized crop
decoder = RandomResizedCropRGBImageDecoder((224, 224))

# Data decoding and augmentation
image_pipeline = [decoder, Cutout(), ToTensor(), ToTorchImage(), ToDevice(0)]
label_pipeline = [IntDecoder(), ToTensor(), ToDevice(0)]

# Pipeline for each data field
pipelines = {
    'image': image_pipeline,
    'label': label_pipeline
}

# Replaces PyTorch data loader (`torch.utils.data.Dataloader`)
loader = Loader(write_path, batch_size=bs, num_workers=num_workers,
                order=OrderOption.RANDOM, pipelines=pipelines)

# rest of training / validation proceeds identically
for epoch in range(epochs):
    ...

See here for a more detailed guide to deploying ffcv for your dataset.

Prepackaged Computer Vision Benchmarks

From gridding to benchmarking to fast research iteration, there are many reasons to want faster model training. Below we present premade codebases for training on ImageNet and CIFAR, including both (a) extensible codebases and (b) numerous premade training configurations.

ImageNet

We provide a self-contained script for training ImageNet fast. Above we plot the training time versus accuracy frontier, and the dataloading speeds, for 1-GPU ResNet-18 and 8-GPU ResNet-50 alongside a few baselines.

Link to Config top_1 top_5 # Epochs Time (mins) Architecture Setup
Link 0.784 0.941 88 77.2 ResNet-50 8 x A100
Link 0.780 0.937 56 49.4 ResNet-50 8 x A100
Link 0.772 0.932 40 35.6 ResNet-50 8 x A100
Link 0.766 0.927 32 28.7 ResNet-50 8 x A100
Link 0.756 0.921 24 21.7 ResNet-50 8 x A100
Link 0.738 0.908 16 14.9 ResNet-50 8 x A100
Link 0.724 0.903 88 187.3 ResNet-18 1 x A100
Link 0.713 0.899 56 119.4 ResNet-18 1 x A100
Link 0.706 0.894 40 85.5 ResNet-18 1 x A100
Link 0.700 0.889 32 68.9 ResNet-18 1 x A100
Link 0.688 0.881 24 51.6 ResNet-18 1 x A100
Link 0.669 0.868 16 35.0 ResNet-18 1 x A100

Train your own ImageNet models! You can use our training script and premade configurations to train any model seen on the above graphs.

CIFAR-10

We also include premade code for efficient training on CIFAR-10 in the examples/ directory, obtaining 93% top1 accuracy in 36 seconds on a single A100 GPU (without optimizations such as MixUp, Ghost BatchNorm, etc. which have the potential to raise the accuracy even further). You can find the training script here.

Features

Computer vision or not, FFCV can help make training faster in a variety of resource-constrained settings! Our performance guide has a more detailed account of the ways in which FFCV can adapt to different performance bottlenecks.

  • Plug-and-play with any existing training code: Rather than changing aspects of model training itself, FFCV focuses on removing data bottlenecks, which turn out to be a problem everywhere from neural network training to linear regression. This means that:

    • FFCV can be introduced into any existing training code in just a few lines of code (e.g., just swapping out the data loader and optionally the augmentation pipeline);
    • You don't have to change the model itself to make it faster (e.g., feel free to analyze models without CutMix, Dropout, momentum scheduling, etc.);
    • FFCV can speed up a lot more beyond just neural network training---in fact, the more data-bottlenecked the application (e.g., linear regression, bulk inference, etc.), the faster FFCV will make it!

    See our Getting started guide, Example walkthroughs, and Code examples to see how easy it is to get started!

  • Fast data processing without the pain: FFCV automatically handles data reading, pre-fetching, caching, and transfer between devices in an extremely efficiently way, so that users don't have to think about it.

  • Automatically fused-and-compiled data processing: By either using pre-written FFCV transformations or easily writing custom ones, users can take advantage of FFCV's compilation and pipelining abilities, which will automatically fuse and compile simple Python augmentations to machine code using Numba, and schedule them asynchronously to avoid loading delays.

  • Load data fast from RAM, SSD, or networked disk: FFCV exposes user-friendly options that can be adjusted based on the resources available. For example, if a dataset fits into memory, FFCV can cache it at the OS level and ensure that multiple concurrent processes all get fast data access. Otherwise, FFCV can use fast process-level caching and will optimize data loading to minimize the underlying number of disk reads. See The Bottleneck Doctor guide for more information.

  • Training multiple models per GPU: Thanks to fully asynchronous thread-based data loading, you can now interleave training multiple models on the same GPU efficiently, without any data-loading overhead. See this guide for more info.

  • Dedicated tools for image handling: All the features above work are equally applicable to all sorts of machine learning models, but FFCV also offers some vision-specific features, such as fast JPEG encoding and decoding, storing datasets as mixtures of raw and compressed images to trade off I/O overhead and compute overhead, etc. See the Working with images guide for more information.

Contributors

ffcv's People

Contributors

afspies avatar aldakata avatar andrewilyas avatar anooptp avatar carmocca avatar dskhudia avatar elicassion avatar fcossio avatar giangnguyen2412 avatar guillaumeleclerc avatar hadisalman avatar jasonlee1995 avatar kellerjordan avatar kristian-georgiev avatar kwentar avatar kynk94 avatar lengstrom avatar mvpatel2000 avatar nicolashug avatar numpee avatar pangoraw avatar pmeier avatar seva100 avatar sung-max avatar vishu26 avatar vtjeng avatar warner-benjamin avatar yvsriram avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ffcv's Issues

FFCV Imagenet Image Quality vs. Native Imagenet Image Quality

Hello! I see that FFCV offers alot of options for the quality of the dataset - e.g. in the imagenet example:

# - 50% JPEG encoded, 90% raw pixel values
# - quality=90 JPEGs
./write_dataset.sh 500 0.50 90

One thing I'm curious is the effects of these quality options on the training results of the dataset, as I'm interested in reproducing Imagenet results but faster using FFCV. What would also be recommended settings to use if you would like to produce Native Imagenet Quality precisely (barring the crop size).

Unsupported Image type

Hi I was following your tutorial and I passed a pytorch Tensor as a image file in the data loader, but I got the following error:

Process Process-1:
Traceback (most recent call last):
  File "/home/qblocks/instance6/mohit/anaconda3/envs/ffcv/lib/python3.9/multiprocessing/process.py", line 315, in _bootstrap
    self.run()
  File "/home/qblocks/instance6/mohit/anaconda3/envs/ffcv/lib/python3.9/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/qblocks/instance6/mohit/anaconda3/envs/ffcv/lib/python3.9/site-packages/ffcv/writer.py", line 112, in worker_job_indexed_dataset
    handle_sample(sample, dest_ix, field_names, metadata, allocator, fields)
  File "/home/qblocks/instance6/mohit/anaconda3/envs/ffcv/lib/python3.9/site-packages/ffcv/writer.py", line 50, in handle_sample
    field.encode(destination, field_value, allocator.malloc)
  File "/home/qblocks/instance6/mohit/anaconda3/envs/ffcv/lib/python3.9/site-packages/ffcv/fields/rgb_image.py", line 325, in encode
    raise TypeError(f"Unsupported image type {type(image)}")
TypeError: Unsupported image type <class 'str'>

Here is my code snippet :

    tr_dataset_func = datasets.COCO('train',args)
    vl_dataset_func = datasets.COCO('train',args)

    train_write_path = "/home/qblocks/instance6/shashank/Development/Watermark_removal/DBWR/DBWR_ffcv/ffcv_data/train/train.beton"
    val_write_path = "/home/qblocks/instance6/shashank/Development/Watermark_removal/DBWR/DBWR_ffcv/ffcv_data/val/val.beton"

    train_writer = DatasetWriter(train_write_path, {"image": RGBImageField(),
                    "target": RGBImageField(), 
                    }, num_workers=1)
    
    val_writer = DatasetWriter(val_write_path, {"image": RGBImageField(),
                    "target": RGBImageField(), 
                    }, num_workers=1)


    train_writer.from_indexed_dataset(tr_dataset_func)
    val_writer.from_indexed_dataset(vl_dataset_func)

Here is my return dict from my dataset class :


        return {
                "image": img_wm_t,
                "target": img_t, 
                }

where both img_wm_t and img_t are pytorch tensors.

Also what Field should I use if i want to return string path from my Dataset class ??

Is albumentations support useful?

HI, ffcv team! Thanks for your great work.
ffcv is so exciting for me.

Do you plan to improve its interoperability with other libraries?
In fact, I want to use more complicated augmentations on ffcv pipeline.
So I tried to add a new Operation to wrap transforms of argumentation.
These codes are below.

ar90n@f53d49d

It seems that they work correctly except for integrations with JIT-compiled codes.
If are you interested in my work, I would like to contribute them to ffcv.
What do you think?

pip install ffcv error

(ffcv) $ pip install ffcv
Collecting ffcv
Using cached ffcv-0.0.2.tar.gz (53 kB)
Preparing metadata (setup.py) ... error
ERROR: Command errored out with exit status 1:
command: /XXX/ffcv/bin/python3.9 -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-j9vpaf6i/ffcv_c2eb5c5207c34d81ac29a3ccddbb59fb/setup.py'"'"'; file='"'"'/tmp/pip-install-j9vpaf6i/ffcv_c2eb5c5207c34d81ac29a3ccddbb59fb/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(file) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-y1669tep
cwd: /tmp/pip-install-j9vpaf6i/ffcv_c2eb5c5207c34d81ac29a3ccddbb59fb/
Complete output (5 lines):
Traceback (most recent call last):
File "", line 1, in
File "/tmp/pip-install-j9vpaf6i/ffcv_c2eb5c5207c34d81ac29a3ccddbb59fb/setup.py", line 36, in
libffcv = Extension('ffcv._libffcv',
TypeError: keywords must be strings

WARNING: Discarding https://files.pythonhosted.org/packages/4f/55/9b06a72c29710110387c3af33eb1a9d6e5d9d5781d5b2850a3ad202942d2/ffcv-0.0.1.tar.gz#sha256=5246dbbbc0a3bcf788783d413292d8bede455a08ad0fa9c29736eca85b577b26 (from https://pypi.org/simple/ffcv/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Could not find a version that satisfies the requirement ffcv (from versions: 0.0.1, 0.0.2)
ERROR: No matching distribution found for ffcv_

OSError on MacOS

Hello,

I am trying to install ffcv on a system with MacOS. I created a new conda environment as stated in the documentation, removing cudatoolkit and cupy. Everything installed without issues. However, when I try from ffcv.writer import DatasetWriter I get the following error:
OSError: dlopen(libc.so.6, 0x0006): tried: '/Users/**/opt/anaconda3/envs/ffcv/lib/python3.9/lib-dynload/../../libc.so.6' (no such file), '/Users/**/opt/anaconda3/envs/ffcv/bin/../lib/libc.so.6' (no such file), 'libc.so.6' (no such file), '/usr/local/lib/libc.so.6' (no such file), '/usr/lib/libc.so.6' (no such file), '/Users/**/libc.so.6' (no such file), '/usr/local/lib/libc.so.6' (no such file), '/usr/lib/libc.so.6' (no such file)

I want to ask if anybody has made ffcv work in MacOS (and therefore I would be doing something wrong) or if it hasn't been tested in this environment.

Thanks!

Tokenizers in pipelines

Is there a recommended way of using HuggingFace tokenizers inside ffcv pipelines? I realize I could pre-tokenize the text and store the raw ints in the dataset, but I'd like the flexibility of switching between different tokenizers without re-processing the dataset.

Installation on Windows 10

All goes well (after install VS2017 SDKs), except for "pip install ffcv". Both versions are tested and yields:

(ffcv) C:\Users\Nico Stuurman>pip install ffcv
Collecting ffcv
  Using cached ffcv-0.0.2.tar.gz (53 kB)
  Preparing metadata (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: 'C:\miniconda3\envs\ffcv\python.exe' -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Nico Stuurman\\AppData\\Local\\Temp\\pip-install-6g53gzac\\ffcv_bec63284499b4f4eaef3c59145fdfa37\\setup.py'"'"'; __file__='"'"'C:\\Users\\Nico Stuurman\\AppData\\Local\\Temp\\pip-install-6g53gzac\\ffcv_bec63284499b4f4eaef3c59145fdfa37\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\Nico Stuurman\AppData\Local\Temp\pip-pip-egg-info-2f42xkgr'
       cwd: C:\Users\Nico Stuurman\AppData\Local\Temp\pip-install-6g53gzac\ffcv_bec63284499b4f4eaef3c59145fdfa37\
  Complete output (7 lines):
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "C:\Users\Nico Stuurman\AppData\Local\Temp\pip-install-6g53gzac\ffcv_bec63284499b4f4eaef3c59145fdfa37\setup.py", line 30, in <module>
      extension_kwargs = pkgconfig('opencv4', extension_kwargs)
    File "C:\Users\Nico Stuurman\AppData\Local\Temp\pip-install-6g53gzac\ffcv_bec63284499b4f4eaef3c59145fdfa37\setup.py", line 18, in pkgconfig
      raise Exception()
  Exception

Not sure where the logs are, but surely would expect 'pkgconfig' to be absent on Windows.

Any ideas?

Standalone quasi-random sampling.

This is a neat library, but I don't have the extra disk space to convert my highly complex torch Dataset into ffcv format. My bottleneck is disk-io, so what I would really like is just a simple standalone quasi-random sampling dataloader that works with existing torch datasets. The idea would be to sample items into a memory pool as fast as possible and sample from the current data in the pool. Each sample in the pool keeps a count of the number of times it's been sampled, and the most used data is kicked out when the pool gets too big. This way the dataloader itself can read from memory and bypass disk overhead for a penalty in batch diversity.

Cifar10 example: very slow training speed on P100 GPU

Hello, as the title suggested, I run the cifar example code on a tesla-p100 gpu, but got a very slow training speed (784.29492) compared to the official stated one (36 s). Anything wrong in my setting? I don't think the p100 gpu is 20x slower than a100.

Below is the command line output (directly copy & paste and don't format it, sorry for that)

(ffcv) ➜ ffcv python train_cifar10.py --config-file default_config.yaml
┌ Arguments defined────────┬───────────────────────────┐
│ Parameter │ Value │
├──────────────────────────┼───────────────────────────┤
│ training.lr │ 0.5 │
│ training.epochs │ 24 │
│ training.lr_peak_epoch │ 5 │
│ training.batch_size │ 512 │
│ training.momentum │ 0.9 │
│ training.weight_decay │ 0.0005 │
│ training.label_smoothing │ 0.1 │
│ training.num_workers │ 4 │
│ training.lr_tta │ True │
│ data.train_dataset │ ../data/cifar_train.beton │
│ data.val_dataset │ ../data/cifar_test.beton │
└──────────────────────────┴───────────────────────────┘
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [01:04<00:00, 1.51it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:30<00:00, 3.16it/s]
Total time: 784.29492
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97/97 [00:11<00:00, 8.59it/s]
train accuracy: 98.0%
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [00:04<00:00, 4.07it/s]
test accuracy: 92.1%

conflicts among packages when installing a conda environment

Hi! Congrats for the amazing work and thank you very much for sharing it publicly.
I encounter an issue while creating a conda environment to install ffcv.

I execute the command from the repo, on a linux machine with conda 4.10.3, and get the following issue (click on the toggle list to see the conda output)
Would you have any recommendation on how to solve these conflicts?

Thanks!

Command to create a conda environment:

conda create -y -n ffcv python=3.9 cupy pkg-config compilers libjpeg-turbo opencv pytorch torchvision cudatoolkit=11.3 numba -c pytorch -c conda-forge
Click here to see the conda output
UnsatisfiableError: The following specifications were found to be incompatible with each other:

Output in format: Requested package -> Available versions

Package libuuid conflicts for:
python=3.9 -> libuuid[version='>=2.32.1,<3.0a0']
cupy -> python[version='>=3.10,<3.11.0a0'] -> libuuid[version='>=1.0.3,<2.0a0|>=2.32.1,<3.0a0']
numba -> python[version='>=3.9,<3.10.0a0'] -> libuuid[version='>=1.0.3,<2.0a0|>=2.32.1,<3.0a0']
pytorch -> python[version='>=3.9,<3.10.0a0'] -> libuuid[version='>=2.32.1,<3.0a0']
torchvision -> python[version='>=3.9,<3.10.0a0'] -> libuuid[version='>=1.0.3,<2.0a0|>=2.32.1,<3.0a0']

Package libgfortran-ng conflicts for:
opencv -> hdf5[version='>=1.10.5,<1.10.6.0a0'] -> libgfortran-ng[version='>=4.9|>=7,<8.0a0|>=7.2.0,<8.0a0']
numba -> numpy[version='>=1.18.5,<2.0a0'] -> libgfortran-ng[version='>=4.9|>=7,<8.0a0|>=7.2.0,<8.0a0']
pytorch -> blas=[build=mkl] -> libgfortran-ng[version='>=4.9|>=7,<8.0a0|>=7.2.0,<8.0a0']
compilers -> fortran-compiler==1.2.0=h1990efc_0 -> libgfortran-ng[version='>=7,<8.0a0']
torchvision -> numpy[version='>=1.11'] -> libgfortran-ng[version='>=4.9|>=7,<8.0a0|>=7.2.0,<8.0a0']
cupy -> numpy[version='>=1.18'] -> libgfortran-ng[version='>=4.9|>=7,<8.0a0|>=7.2.0,<8.0a0']

Package python_abi conflicts for:
cupy -> fastrlock[version='>=0.3'] -> python_abi=2.7[build=*_cp27mu]
cupy -> python_abi[version='3.10.*|3.7|3.7.*|3.9.*|3.8.*|3.6.*|3.6',build='*_cp38|*_cp39|*_cp37m|*_pypy37_pp73|*_cp310|*_cp36m|*_pypy36_pp73']

Package libgcc-ng conflicts for:
torchvision -> libgcc-ng[version='>=5.4.0|>=7.3.0|>=7.5.0']
opencv -> libopencv==4.5.5=py38hd60e7aa_0 -> libgcc-ng[version='>=7.5.0|>=9.3.0|>=9.4.0']
torchvision -> cudatoolkit[version='>=11.1,<11.2'] -> libgcc-ng[version='>=3.0|>=4.9|>=7.2.0|>=9.3.0|>=9.4.0']
opencv -> libgcc-ng[version='>=4.9|>=7.3.0|>=7.2.0']
numba -> libgcc-ng[version='>=4.9|>=7.3.0|>=7.5.0|>=9.3.0|>=9.4.0|>=7.2.0']
compilers -> c-compiler==1.2.0=h7f98852_0 -> libgcc-ng[version='>=7.3.0|>=7.5.0|>=9.3.0']
python=3.9 -> zlib[version='>=1.2.11,<1.3.0a0'] -> libgcc-ng[version='>=4.9|>=7.2.0']
pytorch -> blas=[build=mkl] -> libgcc-ng[version='>=3.0|>=4.9|>=9.3.0|>=9.4.0|>=7.2.0']
cupy -> libgcc-ng[version='>=5.4.0|>=7.3.0|>=7.5.0|>=9.4.0']
cudatoolkit=11.3 -> libgcc-ng[version='>=9.3.0|>=9.4.0']
libjpeg-turbo -> libgcc-ng[version='>=4.9|>=7.3.0|>=7.5.0|>=9.3.0|>=9.4.0']
pkg-config -> libgcc-ng[version='>=4.9|>=7.3.0|>=7.5.0|>=7.2.0']
cupy -> cudatoolkit[version='>=11.2,<12'] -> libgcc-ng[version='>=3.0|>=4.9|>=9.3.0|>=7.2.0']
pytorch -> libgcc-ng[version='>=5.4.0|>=7.3.0|>=7.5.0']
python=3.9 -> libgcc-ng[version='>=7.3.0|>=7.5.0|>=9.3.0|>=9.4.0']

Package libprotobuf conflicts for:
opencv -> libprotobuf[version='>=3.4.1,<3.5.0a0|>=3.5.2,<3.6.0a0']
opencv -> libopencv==4.5.5=py38hd60e7aa_0 -> libprotobuf[version='>=3.15.6,<3.16.0a0|>=3.15.8,<3.16.0a0|>=3.16.0,<3.17.0a0|>=3.18.1,<3.19.0a0|>=3.19.1,<3.20.0a0|>=3.19.3,<3.20.0a0']

Package libstdcxx-ng conflicts for:
opencv -> libopencv==4.5.5=py38hd60e7aa_0 -> libstdcxx-ng[version='>=7.5.0|>=9.3.0|>=9.4.0']
opencv -> libstdcxx-ng[version='>=4.9|>=7.3.0|>=7.2.0']
cudatoolkit=11.3 -> libstdcxx-ng[version='>=9.3.0|>=9.4.0']
cupy -> cudatoolkit[version='>=11.2,<12'] -> libstdcxx-ng[version='>=3.4|>=4.9|>=9.3.0|>=7.2.0']
pytorch -> libstdcxx-ng[version='>=5.4.0|>=7.3.0|>=7.5.0']
torchvision -> libstdcxx-ng[version='>=5.4.0|>=7.3.0|>=7.5.0']
python=3.9 -> libffi[version='>=3.4.2,<3.5.0a0'] -> libstdcxx-ng[version='>=4.9|>=9.4.0|>=7.2.0']
torchvision -> cudatoolkit[version='>=11.1,<11.2'] -> libstdcxx-ng[version='>=3.4|>=4.9|>=9.3.0|>=9.4.0|>=7.2.0']
numba -> libstdcxx-ng[version='>=4.9|>=7.3.0|>=7.5.0|>=9.3.0|>=9.4.0|>=7.2.0']
cupy -> libstdcxx-ng[version='>=5.4.0|>=7.3.0|>=7.5.0|>=9.4.0']
pytorch -> cudatoolkit[version='>=11.3,<11.4'] -> libstdcxx-ng[version='>=3.4|>=4.9|>=9.3.0|>=9.4.0|>=7.2.0']
python=3.9 -> libstdcxx-ng[version='>=7.3.0|>=7.5.0|>=9.3.0']
compilers -> cxx-compiler==1.2.0=h4bd325d_0 -> libstdcxx-ng[version='>=7.3.0|>=7.5.0|>=9.3.0']

Package zlib conflicts for:
pytorch -> python[version='>=3.7,<3.8.0a0'] -> zlib[version='1.2.*|1.2.11|>=1.2.11,<1.3.0a0|1.2.8|1.2.11.*']
numba -> llvmlite[version='>=0.38.0,<0.39.0a0'] -> zlib[version='1.2.*|1.2.11|>=1.2.11,<1.3.0a0|1.2.8|1.2.11.*']
cupy -> python[version='>=3.7,<3.8.0a0'] -> zlib[version='1.2.*|1.2.11|>=1.2.11,<1.3.0a0|1.2.8|1.2.11.*']
opencv -> python[version='>=3.6,<3.7.0a0'] -> zlib[version='1.2.11.*|1.2.8']
pkg-config -> zlib[version='1.2.*|1.2.11|>=1.2.11,<1.3.0a0']
opencv -> zlib[version='1.2.*|1.2.11|>=1.2.11,<1.3.0a0']
torchvision -> ffmpeg[version='>=4.2'] -> zlib[version='1.2.*|1.2.11|>=1.2.11,<1.3.0a0|1.2.8|1.2.11.*']
python=3.9 -> zlib[version='>=1.2.11,<1.3.0a0']

Package libgfortran5 conflicts for:
pytorch -> blas=[build=mkl] -> libgfortran5[version='>=9.3.0|>=9.4.0']
opencv -> hdf5[version='>=1.10.5,<1.10.6.0a0'] -> libgfortran5[version='>=9.3.0']
compilers -> fortran-compiler==1.2.0=h1990efc_0 -> libgfortran5[version='>=9.3.0']

Package freetype conflicts for:
opencv -> freetype[version='>=2.8,<2.9.0a0|>=2.9.1,<3.0a0']
opencv -> libopencv==4.5.5=py38hd60e7aa_0 -> freetype[version='2.6.*|2.7|2.7.*|2.8.1|>=2.10.4,<3.0a0|>=2.8.1,<2.9.0a0|>=2.10.2,<3.0a0|>=2.10.3,<3.0a0|>=2.8.1,<2.8.2.0a0|2.8.1.*']

Package cudnn conflicts for:
pytorch -> cudnn[version='5.1.*|6.0.*|>=7.0.0,<=8.0a0|>=7.0.5,<=8.0a0|>=7.1.0,<=8.0a0|>=7.1.3,<8.0a0|>=7.3.0,<=8.0a0|>=7.6,<8.0a0|>=7.6.5.32,<8.0a0|>=8.2.1.32,<9.0a0|>=8.1.0.77,<9.0a0|>=7.6.5,<8.0a0|>=7.6.4,<8.0a0|>=7.3.1,<8.0a0|>=7.1.2,<
=8.0a0']
torchvision -> pytorch==1.7.1 -> cudnn[version='5.1.*|6.0.*|>=7.0.0,<=8.0a0|>=7.0.5,<=8.0a0|>=7.1.0,<=8.0a0|>=7.1.3,<8.0a0|>=7.3.0,<=8.0a0|>=7.6,<8.0a0|>=7.6.5,<8.0a0|>=7.6.4,<8.0a0|>=7.3.1,<8.0a0|>=7.1.2,<=8.0a0']
cupy -> cudnn[version='>=7.0.5,<=8.0a0|>=7.1.3,<8.0a0|>=7.3.1,<8.0a0|>=7.6,<8.0a0|>=7.6.5.32,<8.0a0|>=8.1.0.77,<9.0a0|>=8.0.5.39,<9.0a0|>=7.1.0,<=8.0a0|>=7.1.2,<=8.0a0']
torchvision -> cudnn[version='>=7.6.5.32,<8.0a0|>=8.2.1.32,<9.0a0|>=8.1.0.77,<9.0a0']

Package jpeg conflicts for:
opencv -> jpeg[version='9.*|>=9c,<10a|>=9b,<10a']
opencv -> libopencv==4.5.5=py38hd60e7aa_0 -> jpeg[version='9b|>=9d,<10a']

Package _libgcc_mutex conflicts for:
libjpeg-turbo -> libgcc-ng[version='>=9.4.0'] -> _libgcc_mutex[version='*|0.1',build='conda_forge|main|main']
numba -> libgcc-ng[version='>=9.4.0'] -> _libgcc_mutex[version='*|0.1',build='conda_forge|main|main']
python=3.9 -> libgcc-ng[version='>=9.4.0'] -> _libgcc_mutex[version='*|0.1',build='conda_forge|main|main']
cupy -> libgcc-ng[version='>=9.4.0'] -> _libgcc_mutex[version='*|0.1|0.1',build='conda_forge|main|main']
cudatoolkit=11.3 -> libgcc-ng[version='>=9.4.0'] -> _libgcc_mutex[version='*|0.1',build='conda_forge|main|main']
opencv -> libgcc-ng[version='>=7.3.0'] -> _libgcc_mutex[version='*|0.1|0.1',build='conda_forge|main|main']
pkg-config -> libgcc-ng[version='>=7.5.0'] -> _libgcc_mutex[version='*|0.1|0.1',build='conda_forge|main|main']
torchvision -> libgcc-ng[version='>=7.5.0'] -> _libgcc_mutex[version='*|0.1|0.1',build='conda_forge|main|main']
pytorch -> _openmp_mutex[version='>=4.5'] -> _libgcc_mutex[version='*|0.1',build='conda_forge|main|main']

Package six conflicts for:
numba -> singledispatch -> six
torchvision -> six
pytorch -> mkl-service[version='>=2,<3.0a0'] -> six
cupy -> six[version='>=1.9|>=1.9.0']

Package cudatoolkit conflicts for:
torchvision -> cudatoolkit[version='10.2|10.2.*|11.0|11.0.*|11.1|11.1.*|>=10.0,<10.1|>=10.1,<10.2|>=10.2,<10.3|>=11.1,<11.2|>=11.3,<11.4|>=11.0,<11.1|>=9.2,<9.3|>=9.0,<9.1|>=11.2,<12.0a0|>=10.0.130,<10.1.0a0|>=9.2,<9.3.0a0|>=9.0,<9.1.0a0'
]
cudatoolkit=11.3
pytorch -> cudatoolkit[version='10.0.*|10.0|10.0.*|10.1|10.1.*|10.2|10.2.*|11.0|11.0.*|11.1|11.1.*|8.*|>=10.0,<10.1|>=10.1,<10.2|>=10.2,<10.3|>=11.1,<11.2|>=11.3,<11.4|>=11.0,<11.1|>=9.2,<9.3|>=9.0,<9.1|>=8.0,<8.1|9.*|>=11.2,<12|>=11.2,<1
2.0a0|9.2|9.2.*|>=10.1.243,<10.2.0a0|>=9.2,<9.3.0a0|>=10.0.130,<10.1.0a0|9.2.*|>=9.0,<9.1.0a0|>=8.0,<8.1.0a0|9.0.*|8.0.*|7.5.*']
pytorch -> cudnn[version='>=8.2.1.32,<9.0a0'] -> cudatoolkit[version='10.2.*|11.*']
torchvision -> pytorch==1.10.0 -> cudatoolkit[version='10.0.*|10.0|10.0.*|10.1|10.1.*|>=11.2,<12|9.2|9.2.*|>=10.1.243,<10.2.0a0|9.2.*|>=8.0,<8.1|>=8.0,<8.1.0a0|8.*|9.*|9.0.*|8.0.*|7.5.*|11.*|10.2.*']

Package libwebp conflicts for:
opencv -> libopencv==4.3.0=py36_0 -> libwebp[version='>=1.0.2,<1.1.0a0']
opencv -> libwebp[version='0.5.*|>=0.5.2,<0.6.0a0|>=1.0.0,<1.1.0a0']

Package ffmpeg conflicts for:
opencv -> ffmpeg[version='4.1.*|>=4.1.3,<4.2.0a0|>=4.1.1,<4.2.0a0|>=4.1,<4.2.0a0|>=4.0.2,<4.1.0a0|>=4.0.1,<4.1.0a0|>=3.2.3,<3.2.6|>=3.4,<3.5.0a0']
opencv -> libopencv==4.5.5=py38hd60e7aa_0 -> ffmpeg[version='>=4.2,<4.3.0a0|>=4.2.3,<4.3.0a0|>=4.3,<4.4.0a0|>=4.3.1,<4.4.0a0|>=4.3.1,<5.0a0|>=4.3.2,<5.0a0']

Package pypy3.7 conflicts for:
cupy -> python[version='>=3.7,<3.8.0a0'] -> pypy3.7[version='7.3.*|7.3.3.*|7.3.4.*|7.3.5.*|7.3.7.*']
cupy -> pypy3.7[version='>=7.3.3|>=7.3.4|>=7.3.5|>=7.3.7']

Package expat conflicts for:
opencv -> pypy3.6[version='>=7.3.3'] -> expat[version='>=2.2.10,<3.0.0a0|>=2.2.9,<3.0.0a0|>=2.2.5,<3.0.0a0|>=2.2.6,<3.0a0']
cupy -> pypy3.7[version='>=7.3.7'] -> expat[version='>=2.2.9,<3.0.0a0|>=2.3.0,<3.0a0|>=2.4.1,<3.0a0']

Package llvm-openmp conflicts for:
pytorch -> blas=[build=mkl] -> llvm-openmp[version='>=10.0.0|>=11.0.0|>=11.0.1|>=11.1.0|>=12.0.1|>=9.0.1']
numba -> _openmp_mutex[version='>=4.5'] -> llvm-openmp[version='>=9.0.1']

Package liblapacke conflicts for:
opencv -> liblapacke[version='>=3.8.0,<4.0.0a0']
opencv -> libopencv==4.5.5=py38hd60e7aa_0 -> liblapacke[version='>=3.8.0,<4.0a0']

Package python conflicts for:
python=3.9
pytorch -> python[version='>=2.7,<2.8.0a0|>=3.5,<3.6.0a0|>=3.6,<3.7.0a0|>=3.7,<3.8.0a0|>=3.8,<3.9.0a0|>=3.9,<3.10.0a0']
torchvision -> python[version='>=2.7,<2.8.0a0|>=3.5,<3.6.0a0|>=3.6,<3.7.0a0|>=3.8,<3.9.0a0|>=3.7,<3.8.0a0|>=3.9,<3.10.0a0']
opencv -> py-opencv==4.5.5=py38he5a9106_0 -> python[version='3.10.*|3.7.*|3.8.*|>=3.8,<3.9.0a0|>=3.10,<3.11.0a0|>=3.9,<3.10.0a0|3.9.*']
numba -> python_abi=3.7[build=*_cp37m] -> python[version='3.10.*|3.4.*|3.7.*|3.9.*|3.8.*']
pytorch -> typing_extensions -> python[version='2.7.*|3.5.*|3.6.*|3.9.*|>=3.10,<3.11.0a0|>=3.5|>=3.6|>=3.7|>=3.6,<3.7|3.4.*|3.7.12|3.7.10|3.7.10|3.6.12|3.7.9|3.6.12|3.6.9|3.6.9|3.6.9|3.6.9|>=3|3.8.*|3.7.*',build='0_73_pypy|3_73_pypy|4_73_
pypy|5_73_pypy|5_73_pypy|0_73_pypy|0_73_pypy|1_73_pypy|2_73_pypy|1_73_pypy']
torchvision -> numpy[version='>=1.11'] -> python[version='2.7.*|3.5.*|3.6.*|>=3.10,<3.11.0a0|3.4.*|3.9.*|3.7.*|3.8.*']
numba -> python[version='2.7.*|3.5.*|3.6.*|>=2.7,<2.8.0a0|>=3.10,<3.11.0a0|>=3.7,<3.8.0a0|>=3.9,<3.10.0a0|>=3.8,<3.9.0a0|>=3.6,<3.7.0a0|>=3.5,<3.6.0a0']
opencv -> python[version='2.7.*|3.5.*|3.6.*|>=2.7,<2.8.0a0|>=3.6,<3.7.0a0|>=3.7,<3.8.0a0|>=3.5,<3.6.0a0|3.4.*']

Package certifi conflicts for:
numba -> setuptools -> certifi[version='>=2016.09|>=2016.9.26']
pytorch -> setuptools -> certifi[version='>=2016.09|>=2016.9.26']
cupy -> setuptools -> certifi[version='>=2016.09|>=2016.9.26']

Package libgfortran4 conflicts for:
pytorch -> blas=[build=mkl] -> libgfortran4[version='>=7.5.0']
opencv -> hdf5[version='>=1.10.5,<1.10.6.0a0'] -> libgfortran4[version='>=7.5.0']

Package x264 conflicts for:
torchvision -> ffmpeg[version='>=4.2'] -> x264[version='>=1!152.20180806,<1!153|>=1!161.3030,<1!162|>=1!157.20191217,<1!158']
opencv -> ffmpeg=4.1 -> x264[version='1!152.*|>=1!152.20180717,<1!153|>=1!152.20180806,<1!153|>=1!161.3030,<1!162|>=20180712,<20180713.0a0|>=20180712,<20190000|>=20180501,<20180502.0a0|>=1!157.20191217,<1!158']

Package numpy-base conflicts for:
pytorch -> numpy[version='>=1.19'] -> numpy-base[version='1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.
3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.14.3|1.14.3|1.14.3|1.14.
3|1.14.3|1.14.3|1.14.4|1.14.4|1.14.4|1.14.4|1.14.4|1.14.4|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.
5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.1|1.15.1|1.15.1|1.15.1|1.15.
1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.3|1.15.3|1.15.3|1.15.3|1.15.3|1.15.3|1.15.4|1.15.4|1.15.4|1.15.4|1.15.4|1.15.4|1.15.
4|1.15.4|1.15.4|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.2|1.16.2|1.16.2|1.16.2|1.16.2|1.16.2|1.16.3|1.16.
3|1.16.3|1.16.3|1.16.3|1.16.3|1.16.4|1.16.4|1.16.4|1.16.4|1.16.4|1.16.4|1.16.5|1.16.5|1.16.5|1.16.5|1.16.5|1.16.5|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.
6|1.17.2.*|1.17.3.*|1.17.4.*|1.18.1.*|1.18.5.*|1.19.1|1.19.1|1.19.1|1.19.1|1.19.1|1.19.1|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.20.1|1.20.1|1.20.1|1.20.1|1.20.1|1.20.1|1.20.2|1.20.2|1.20.2|1.20.2|1.20.2|1.20.2|1.20.3|1.
20.3|1.20.3|1.20.3|1.20.3|1.20.3|1.21.2|1.17.0|1.17.0|1.17.0|1.17.0|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|>=1.9.3,<2.0a0',build='py37h2b20989_6|py27h2b20989_7|py36hdbf6ddf_7|py36h2b20989_7|py3
5h2b20989_7|py37hdbf6ddf_7|py37hde5b4d6_0|py36hde5b4d6_0|py37h2b20989_7|py37hdbf6ddf_7|py36hdbf6ddf_8|py37hdbf6ddf_8|py37h2b20989_8|py35hdbf6ddf_8|py36h7cdd4dd_9|py35h3dfced4_9|py27h3dfced4_9|py27h74e8950_9|py27h81de0dd_9|py35h74e8950_10|
py27h74e8950_10|py27h81de0dd_10|py36h81de0dd_10|py37h2f8d375_10|py27h2f8d375_10|py27h2f8d375_11|py27hde5b4d6_11|py37h2f8d375_12|py27h2f8d375_12|py36h2f8d375_12|py27hde5b4d6_12|py38hde5b4d6_12|py38h2f8d375_12|py36h0ea5e3f_1|py27h0ea5e3f_1|
py36h9be14a7_1|py27h9be14a7_1|py35h9be14a7_1|py36h2b20989_0|py27hdbf6ddf_0|py35hdbf6ddf_0|py36hdbf6ddf_0|py27hdbf6ddf_0|py35hdbf6ddf_0|py37h2b20989_1|py27hdbf6ddf_1|py27h2b20989_1|py36h2b20989_2|py36hdbf6ddf_2|py36h2b20989_3|py27h2b20989_
3|py27hdbf6ddf_3|py27hdbf6ddf_4|py37hdbf6ddf_4|py36hdbf6ddf_4|py35h2b20989_4|py35h2f8d375_4|py36h2f8d375_4|py27h2f8d375_4|py35h81de0dd_4|py37h81de0dd_4|py36h81de0dd_4|py38h2f8d375_4|py27hde5b4d6_5|py36h7cdd4dd_0|py35h7cdd4dd_0|py36h3dfced
4_0|py35h3dfced4_0|py37h3dfced4_0|py36h74e8950_0|py36h81de0dd_0|py36h81de0dd_1|py37h2f8d375_1|py37h2f8d375_0|py37h2f8d375_0|py36h81de0dd_0|py27hde5b4d6_0|py36hde5b4d6_0|py37h2f8d375_0|py37hde5b4d6_0|py36h2f8d375_0|py36hde5b4d6_0|py37h2f8d
375_1|py27h2f8d375_1|py37hde5b4d6_1|py27hde5b4d6_1|py36hde5b4d6_1|py36hde5b4d6_0|py37h2f8d375_1|py36h2f8d375_1|py37hde5b4d6_1|py36hde5b4d6_1|py27hde5b4d6_1|py36h2f8d375_0|py27hde5b4d6_0|py36hde5b4d6_0|py37hde5b4d6_0|py36hde5b4d6_0|py37h2f
8d375_0|py36hde5b4d6_0|py37hde5b4d6_0|py39h76555f2_1|py39h41b4c56_3|py38h41b4c56_3|py36hdc34a94_3|py39hdc34a94_3|py37hfa32c7d_0|py38hfa32c7d_0|py36h75fe3a5_0|py36h75fe3a5_0|py38hfa32c7d_0|py39h2ae0177_0|py37h7d8b39e_0|py38h7d8b39e_0|py38h
e2ba247_0|py37h74d4b33_0|py39h74d4b33_0|py38h39b7dee_0|py39h39b7dee_0|py37h79a1101_0|py38h2b8c604_0|py310h79a1101_0|py310h2b8c604_0|py39h2b8c604_0|py37h2b8c604_0|py39h79a1101_0|py38h79a1101_0|py37h39b7dee_0|py38h74d4b33_0|py39hfae3a4d_0|p
y37he2ba247_0|py37hfae3a4d_0|py39he2ba247_0|py38hfae3a4d_0|py39h7d8b39e_0|py38h34387ca_0|py39h34387ca_0|py37h34387ca_0|py39h0f7b65f_0|py36hfa32c7d_0|py37h75fe3a5_0|py38h75fe3a5_0|py37hfa32c7d_0|py37h75fe3a5_0|py36hfa32c7d_0|py38h75fe3a5_0
|py37hdc34a94_3|py38hdc34a94_3|py36h41b4c56_3|py37h41b4c56_3|py39hfb011de_1|py27hde5b4d6_0|py27h2f8d375_0|py38hde5b4d6_0|py38h2f8d375_0|py36hde5b4d6_0|py36h2f8d375_0|py37h2f8d375_0|py37hde5b4d6_0|py27hde5b4d6_0|py27h2f8d375_0|py36h2f8d375
_0|py27hde5b4d6_0|py37h2f8d375_0|py36h2f8d375_0|py27h2f8d375_0|py27hde5b4d6_0|py37hde5b4d6_0|py36h2f8d375_0|py37h2f8d375_0|py27h2f8d375_0|py36hde5b4d6_0|py37hde5b4d6_0|py27h2f8d375_0|py37h2f8d375_0|py27h2f8d375_1|py27hde5b4d6_0|py37hde5b4
d6_0|py36h2f8d375_0|py27h2f8d375_0|py37h2f8d375_0|py36h2f8d375_1|py27hde5b4d6_0|py27h2f8d375_0|py37hde5b4d6_0|py27h81de0dd_0|py37h81de0dd_0|py27h2f8d375_0|py36h2f8d375_0|py37h81de0dd_0|py36h81de0dd_0|py27h81de0dd_0|py36h2f8d375_0|py27h2f8
d375_0|py37h81de0dd_1|py27h81de0dd_1|py27h2f8d375_1|py36h2f8d375_1|py36h81de0dd_0|py36h2f8d375_0|py35h2f8d375_0|py35h81de0dd_0|py27h81de0dd_0|py37h81de0dd_0|py27h2f8d375_0|py37h2f8d375_0|py37h2f8d375_0|py36h2f8d375_0|py27h2f8d375_0|py35h2
f8d375_0|py35h81de0dd_0|py37h81de0dd_0|py27h81de0dd_0|py37h74e8950_0|py27h74e8950_0|py35h74e8950_0|py27h3dfced4_0|py37h7cdd4dd_0|py27h7cdd4dd_0|py36hde5b4d6_5|py37hde5b4d6_5|py27h2f8d375_5|py37h2f8d375_5|py36h2f8d375_5|py38hde5b4d6_4|py27
h81de0dd_4|py37h2f8d375_4|py35hdbf6ddf_4|py36h2b20989_4|py37h2b20989_4|py27h2b20989_4|py36hdbf6ddf_3|py37hdbf6ddf_3|py37h2b20989_3|py37hdbf6ddf_2|py27hdbf6ddf_2|py37h2b20989_2|py27h2b20989_2|py37hdbf6ddf_1|py36hdbf6ddf_1|py36h2b20989_1|py
27h2b20989_0|py36h2b20989_0|py36hdbf6ddf_0|py35h2b20989_0|py27h2b20989_0|py35h0ea5e3f_1|py36hde5b4d6_12|py37hde5b4d6_12|py37hde5b4d6_11|py36hde5b4d6_11|py36h2f8d375_11|py37h2f8d375_11|py35h2f8d375_10|py36h2f8d375_10|py35h81de0dd_10|py37h8
1de0dd_10|py36h74e8950_10|py37h74e8950_10|py35h81de0dd_9|py36h74e8950_9|py37h74e8950_9|py35h74e8950_9|py37h81de0dd_9|py36h81de0dd_9|py36h3dfced4_9|py37h3dfced4_9|py37h7cdd4dd_9|py27h7cdd4dd_9|py35h7cdd4dd_9|py35h2b20989_8|py27hdbf6ddf_8|p
y27h2b20989_8|py36h2b20989_8|py36hdbf6ddf_7|py27hdbf6ddf_7|py36h2b20989_7|py27h2b20989_7|py37h2f8d375_0|py36h2f8d375_0|py37h2b20989_7|py35hdbf6ddf_7|py27hdbf6ddf_7|py36hdbf6ddf_6|py27hdbf6ddf_6|py37hdbf6ddf_6|py36h2b20989_6|py27h2b20989_6
']
opencv -> numpy[version='>=1.14.6,<2.0a0'] -> numpy-base[version='1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11
.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.14.3|1.14.3|1.14
.3|1.14.3|1.14.3|1.14.3|1.14.4|1.14.4|1.14.4|1.14.4|1.14.4|1.14.4|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14
.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.1|1.15.1|1.15.1|1.15
.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.3|1.15.3|1.15.3|1.15.3|1.15.3|1.15.3|1.15.4|1.15.4|1.15.4|1.15.4|1.15.4|1.15
.4|1.15.4|1.15.4|1.15.4|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.2|1.16.2|1.16.2|1.16.2|1.16.2|1.16.2|1.16
.3|1.16.3|1.16.3|1.16.3|1.16.3|1.16.3|1.16.4|1.16.4|1.16.4|1.16.4|1.16.4|1.16.4|1.16.5|1.16.5|1.16.5|1.16.5|1.16.5|1.16.5|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16
.6|1.16.6|1.17.2.*|1.17.3.*|1.17.4.*|1.18.1.*|1.18.5.*|1.19.1|1.19.1|1.19.1|1.19.1|1.19.1|1.19.1|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.20.1|1.20.1|1.20.1|1.20.1|1.20.1|1.20.1|1.20.2|1.20.2|1.20.2|1.20.2|1.20.2|1.20.2|1
.20.3|1.20.3|1.20.3|1.20.3|1.20.3|1.20.3|1.21.2|1.17.0|1.17.0|1.17.0|1.17.0|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|>=1.9.3,<2.0a0',build='py36hdbf6ddf_6|py36h2b20989_7|py37hdbf6ddf_7|py37hdbf6d
df_7|py36hdbf6ddf_8|py36h2b20989_8|py37hdbf6ddf_8|py37h2b20989_8|py27h2b20989_8|py27hdbf6ddf_8|py36h7cdd4dd_9|py27h7cdd4dd_9|py27h3dfced4_9|py27h74e8950_9|py35h74e8950_9|py27h81de0dd_9|py35h74e8950_10|py27h74e8950_10|py27h81de0dd_10|py37h
81de0dd_10|py37h2f8d375_10|py27h2f8d375_10|py36hde5b4d6_11|py37hde5b4d6_11|py37h2f8d375_12|py36h2f8d375_12|py38hde5b4d6_12|py38h2f8d375_12|py27h0ea5e3f_1|py36h9be14a7_1|py27h9be14a7_1|py35h9be14a7_1|py27hdbf6ddf_0|py36h2b20989_0|py27hdbf6
ddf_0|py35hdbf6ddf_0|py36h2b20989_1|py37h2b20989_1|py27hdbf6ddf_1|py36hdbf6ddf_1|py27h2b20989_1|py27hdbf6ddf_2|py37hdbf6ddf_2|py36hdbf6ddf_2|py37hdbf6ddf_3|py36hdbf6ddf_3|py27hdbf6ddf_3|py27hdbf6ddf_4|py36h2b20989_4|py35hdbf6ddf_4|py35h2b
20989_4|py36h2f8d375_0|py36hde5b4d6_0|py35h2f8d375_4|py36h2f8d375_4|py27h2f8d375_4|py35h81de0dd_4|py37h81de0dd_4|py36h81de0dd_4|py38h2f8d375_4|py27hde5b4d6_5|py36h7cdd4dd_0|py35h7cdd4dd_0|py36h3dfced4_0|py35h3dfced4_0|py37h3dfced4_0|py36h
74e8950_0|py36h81de0dd_0|py36h81de0dd_1|py37h2f8d375_1|py37h2f8d375_0|py37h2f8d375_0|py36h81de0dd_0|py27hde5b4d6_0|py36hde5b4d6_0|py37h2f8d375_0|py37hde5b4d6_0|py36h2f8d375_0|py36hde5b4d6_0|py37h2f8d375_1|py27h2f8d375_1|py37hde5b4d6_1|py2
7hde5b4d6_1|py36hde5b4d6_1|py36hde5b4d6_0|py37h2f8d375_1|py36h2f8d375_1|py37hde5b4d6_1|py36hde5b4d6_1|py27hde5b4d6_1|py36h2f8d375_0|py27hde5b4d6_0|py36hde5b4d6_0|py37hde5b4d6_0|py36hde5b4d6_0|py37h2f8d375_0|py36hde5b4d6_0|py37hde5b4d6_0|p
y39h76555f2_1|py39h41b4c56_3|py38h41b4c56_3|py36hdc34a94_3|py39hdc34a94_3|py37hfa32c7d_0|py38hfa32c7d_0|py36h75fe3a5_0|py36h75fe3a5_0|py38hfa32c7d_0|py39h2ae0177_0|py37h7d8b39e_0|py38h7d8b39e_0|py38he2ba247_0|py37h74d4b33_0|py39h74d4b33_0
|py38h39b7dee_0|py39h39b7dee_0|py37h79a1101_0|py38h2b8c604_0|py310h79a1101_0|py310h2b8c604_0|py39h2b8c604_0|py37h2b8c604_0|py39h79a1101_0|py38h79a1101_0|py37h39b7dee_0|py38h74d4b33_0|py39hfae3a4d_0|py37he2ba247_0|py37hfae3a4d_0|py39he2ba2
47_0|py38hfae3a4d_0|py39h7d8b39e_0|py38h34387ca_0|py39h34387ca_0|py37h34387ca_0|py39h0f7b65f_0|py36hfa32c7d_0|py37h75fe3a5_0|py38h75fe3a5_0|py37hfa32c7d_0|py37h75fe3a5_0|py36hfa32c7d_0|py38h75fe3a5_0|py37hdc34a94_3|py38hdc34a94_3|py36h41b
4c56_3|py37h41b4c56_3|py39hfb011de_1|py27hde5b4d6_0|py27h2f8d375_0|py38hde5b4d6_0|py38h2f8d375_0|py36hde5b4d6_0|py36h2f8d375_0|py37h2f8d375_0|py37hde5b4d6_0|py27hde5b4d6_0|py27h2f8d375_0|py36h2f8d375_0|py27hde5b4d6_0|py37h2f8d375_0|py36h2
f8d375_0|py27h2f8d375_0|py27hde5b4d6_0|py37hde5b4d6_0|py36h2f8d375_0|py37h2f8d375_0|py27h2f8d375_0|py36hde5b4d6_0|py37hde5b4d6_0|py27h2f8d375_0|py37h2f8d375_0|py27h2f8d375_1|py27hde5b4d6_0|py37hde5b4d6_0|py36h2f8d375_0|py27h2f8d375_0|py37
h2f8d375_0|py36h2f8d375_1|py27hde5b4d6_0|py27h2f8d375_0|py37hde5b4d6_0|py27h81de0dd_0|py37h81de0dd_0|py27h2f8d375_0|py36h2f8d375_0|py37h81de0dd_0|py36h81de0dd_0|py27h81de0dd_0|py36h2f8d375_0|py27h2f8d375_0|py37h81de0dd_1|py27h81de0dd_1|py
27h2f8d375_1|py36h2f8d375_1|py36h81de0dd_0|py36h2f8d375_0|py35h2f8d375_0|py35h81de0dd_0|py27h81de0dd_0|py37h81de0dd_0|py27h2f8d375_0|py37h2f8d375_0|py37h2f8d375_0|py36h2f8d375_0|py27h2f8d375_0|py35h2f8d375_0|py35h81de0dd_0|py37h81de0dd_0|
py27h81de0dd_0|py37h74e8950_0|py27h74e8950_0|py35h74e8950_0|py27h3dfced4_0|py37h7cdd4dd_0|py27h7cdd4dd_0|py36hde5b4d6_5|py37hde5b4d6_5|py27h2f8d375_5|py37h2f8d375_5|py36h2f8d375_5|py38hde5b4d6_4|py27h81de0dd_4|py37h2f8d375_4|py37hde5b4d6_
0|py37h2f8d375_0|py36hdbf6ddf_4|py37hdbf6ddf_4|py37h2b20989_4|py27h2b20989_4|py27h2b20989_3|py37h2b20989_3|py36h2b20989_3|py37h2b20989_2|py36h2b20989_2|py27h2b20989_2|py37hdbf6ddf_1|py36hdbf6ddf_0|py27h2b20989_0|py35hdbf6ddf_0|py36hdbf6dd
f_0|py35h2b20989_0|py36h2b20989_0|py27h2b20989_0|py35h0ea5e3f_1|py36h0ea5e3f_1|py36hde5b4d6_12|py37hde5b4d6_12|py27hde5b4d6_12|py27h2f8d375_12|py27hde5b4d6_11|py36h2f8d375_11|py27h2f8d375_11|py37h2f8d375_11|py35h2f8d375_10|py36h2f8d375_10
|py35h81de0dd_10|py36h81de0dd_10|py36h74e8950_10|py37h74e8950_10|py35h81de0dd_9|py36h74e8950_9|py37h74e8950_9|py37h81de0dd_9|py36h81de0dd_9|py35h3dfced4_9|py36h3dfced4_9|py37h3dfced4_9|py37h7cdd4dd_9|py35h7cdd4dd_9|py35h2b20989_8|py35hdbf
6ddf_8|py36hdbf6ddf_7|py27hdbf6ddf_7|py36h2b20989_7|py27h2b20989_7|py37h2b20989_7|py37h2b20989_7|py35h2b20989_7|py35hdbf6ddf_7|py36hdbf6ddf_7|py27h2b20989_7|py27hdbf6ddf_7|py27hdbf6ddf_6|py37hdbf6ddf_6|py37h2b20989_6|py36h2b20989_6|py27h2
b20989_6']
numba -> numpy[version='>=1.18.5,<2.0a0'] -> numpy-base[version='1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.
3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.14.3|1.14.3|1.14.
3|1.14.3|1.14.3|1.14.3|1.14.4|1.14.4|1.14.4|1.14.4|1.14.4|1.14.4|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.
5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.1|1.15.1|1.15.1|1.15.
1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.3|1.15.3|1.15.3|1.15.3|1.15.3|1.15.3|1.15.4|1.15.4|1.15.4|1.15.4|1.15.4|1.15.
4|1.15.4|1.15.4|1.15.4|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.2|1.16.2|1.16.2|1.16.2|1.16.2|1.16.2|1.16.
3|1.16.3|1.16.3|1.16.3|1.16.3|1.16.3|1.16.4|1.16.4|1.16.4|1.16.4|1.16.4|1.16.4|1.16.5|1.16.5|1.16.5|1.16.5|1.16.5|1.16.5|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.
6|1.16.6|1.17.2.*|1.17.3.*|1.17.4.*|1.18.1.*|1.18.5.*|1.19.1|1.19.1|1.19.1|1.19.1|1.19.1|1.19.1|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.20.1|1.20.1|1.20.1|1.20.1|1.20.1|1.20.1|1.20.2|1.20.2|1.20.2|1.20.2|1.20.2|1.20.2|1.
20.3|1.20.3|1.20.3|1.20.3|1.20.3|1.20.3|1.21.2|1.17.0|1.17.0|1.17.0|1.17.0|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|>=1.9.3,<2.0a0',build='py37h2b20989_6|py37hdbf6ddf_6|py36hdbf6ddf_6|py36hdbf6dd
f_7|py35h2b20989_7|py37hdbf6ddf_7|py37h2b20989_7|py36hdbf6ddf_7|py37hdbf6ddf_7|py37hdbf6ddf_8|py37h2b20989_8|py27hdbf6ddf_8|py36h7cdd4dd_9|py37h3dfced4_9|py27h3dfced4_9|py36h81de0dd_9|py27h74e8950_9|py37h74e8950_9|py27h81de0dd_9|py35h74e8
950_10|py27h74e8950_10|py36h74e8950_10|py27h81de0dd_10|py37h81de0dd_10|py36h81de0dd_10|py37h2f8d375_10|py27h2f8d375_10|py36hde5b4d6_11|py37hde5b4d6_11|py37h2f8d375_12|py36h2f8d375_12|py38hde5b4d6_12|py38h2f8d375_12|py27h0ea5e3f_1|py36h9be
14a7_1|py27h9be14a7_1|py35h9be14a7_1|py36h2b20989_0|py27hdbf6ddf_0|py36hdbf6ddf_0|py35hdbf6ddf_0|py36h2b20989_0|py27hdbf6ddf_0|py35hdbf6ddf_0|py37h2b20989_1|py27hdbf6ddf_1|py27h2b20989_1|py36h2b20989_2|py27hdbf6ddf_2|py36hdbf6ddf_2|py36h2
b20989_3|py37hdbf6ddf_3|py27hdbf6ddf_3|py37h2b20989_4|py37hdbf6ddf_4|py35hdbf6ddf_4|py35h2f8d375_4|py36h2f8d375_4|py27h2f8d375_4|py37h81de0dd_4|py36h81de0dd_4|py38h2f8d375_4|py37hde5b4d6_5|py27h7cdd4dd_0|py36h7cdd4dd_0|py35h7cdd4dd_0|py37
h3dfced4_0|py27h74e8950_0|py36h74e8950_0|py37h74e8950_0|py36h81de0dd_0|py27h81de0dd_0|py35h81de0dd_0|py37h81de0dd_0|py27h81de0dd_0|py35h81de0dd_0|py37h81de0dd_1|py37h2f8d375_1|py36h2f8d375_0|py27h81de0dd_0|py36h81de0dd_0|py36hde5b4d6_0|py
37hde5b4d6_0|py37hde5b4d6_0|py36hde5b4d6_0|py37h2f8d375_1|py36h2f8d375_1|py37hde5b4d6_1|py27hde5b4d6_1|py36h2f8d375_0|py36hde5b4d6_0|py27hde5b4d6_0|py27h2f8d375_1|py37h2f8d375_1|py37hde5b4d6_1|py27hde5b4d6_1|py37hde5b4d6_0|py27hde5b4d6_0|
py36hde5b4d6_0|py37h2f8d375_0|py36hde5b4d6_0|py37h2f8d375_0|py36hde5b4d6_0|py36hde5b4d6_0|py37hde5b4d6_0|py39h76555f2_1|py39h41b4c56_3|py38h41b4c56_3|py36hdc34a94_3|py39hdc34a94_3|py37hfa32c7d_0|py38hfa32c7d_0|py36h75fe3a5_0|py36h75fe3a5_
0|py38hfa32c7d_0|py39h2ae0177_0|py37h7d8b39e_0|py38h7d8b39e_0|py38he2ba247_0|py37h74d4b33_0|py39h74d4b33_0|py38h39b7dee_0|py39h39b7dee_0|py37h79a1101_0|py38h2b8c604_0|py310h79a1101_0|py310h2b8c604_0|py39h2b8c604_0|py37h2b8c604_0|py39h79a1
101_0|py38h79a1101_0|py37h39b7dee_0|py38h74d4b33_0|py39hfae3a4d_0|py37he2ba247_0|py37hfae3a4d_0|py39he2ba247_0|py38hfae3a4d_0|py39h7d8b39e_0|py38h34387ca_0|py39h34387ca_0|py37h34387ca_0|py39h0f7b65f_0|py36hfa32c7d_0|py37h75fe3a5_0|py38h75
fe3a5_0|py37hfa32c7d_0|py37h75fe3a5_0|py36hfa32c7d_0|py38h75fe3a5_0|py37hdc34a94_3|py38hdc34a94_3|py36h41b4c56_3|py37h41b4c56_3|py39hfb011de_1|py27hde5b4d6_0|py27h2f8d375_0|py38hde5b4d6_0|py38h2f8d375_0|py36hde5b4d6_0|py36h2f8d375_0|py37h
2f8d375_0|py37hde5b4d6_0|py37h2f8d375_0|py36h2f8d375_0|py36hde5b4d6_0|py37hde5b4d6_0|py27hde5b4d6_0|py37h2f8d375_0|py27h2f8d375_0|py36h2f8d375_0|py27hde5b4d6_0|py37hde5b4d6_0|py36h2f8d375_0|py27h2f8d375_0|py27hde5b4d6_0|py37hde5b4d6_0|py3
6h2f8d375_0|py27h2f8d375_0|py27h2f8d375_0|py36h2f8d375_0|py37h2f8d375_0|py36hde5b4d6_1|py36h2f8d375_1|py37hde5b4d6_0|py27h2f8d375_0|py37h2f8d375_0|py36hde5b4d6_1|py27h2f8d375_1|py27hde5b4d6_0|py36h2f8d375_0|py37h2f8d375_0|py27h2f8d375_0|p
y27hde5b4d6_0|py27h81de0dd_0|py37h81de0dd_0|py27h2f8d375_0|py36h2f8d375_0|py37h2f8d375_0|py37h81de0dd_0|py36h81de0dd_0|py37h2f8d375_0|py27h2f8d375_0|py36h81de0dd_1|py27h81de0dd_1|py27h2f8d375_1|py36h2f8d375_1|py36h81de0dd_0|py36h2f8d375_0
|py35h2f8d375_0|py27h2f8d375_0|py37h2f8d375_0|py37h2f8d375_0|py36h2f8d375_0|py27h2f8d375_0|py35h2f8d375_0|py37h81de0dd_0|py35h74e8950_0|py35h3dfced4_0|py36h3dfced4_0|py27h3dfced4_0|py37h7cdd4dd_0|py36hde5b4d6_5|py27hde5b4d6_5|py27h2f8d375
_5|py37h2f8d375_5|py36h2f8d375_5|py38hde5b4d6_4|py35h81de0dd_4|py27h81de0dd_4|py37h2f8d375_4|py35h2b20989_4|py36hdbf6ddf_4|py36h2b20989_4|py27hdbf6ddf_4|py27h2b20989_4|py27h2b20989_3|py36hdbf6ddf_3|py37h2b20989_3|py37hdbf6ddf_2|py37h2b209
89_2|py27h2b20989_2|py37hdbf6ddf_1|py36hdbf6ddf_1|py36h2b20989_1|py36hdbf6ddf_0|py27h2b20989_0|py35h2b20989_0|py27h2b20989_0|py35h0ea5e3f_1|py36h0ea5e3f_1|py36hde5b4d6_12|py37hde5b4d6_12|py27hde5b4d6_12|py27h2f8d375_12|py27hde5b4d6_11|py3
6h2f8d375_11|py27h2f8d375_11|py37h2f8d375_11|py35h2f8d375_10|py36h2f8d375_10|py35h81de0dd_10|py37h74e8950_10|py35h81de0dd_9|py36h74e8950_9|py35h74e8950_9|py37h81de0dd_9|py35h3dfced4_9|py36h3dfced4_9|py37h7cdd4dd_9|py27h7cdd4dd_9|py35h7cdd
4dd_9|py35h2b20989_8|py35hdbf6ddf_8|py27h2b20989_8|py36h2b20989_8|py36hdbf6ddf_8|py27hdbf6ddf_7|py36h2b20989_7|py27h2b20989_7|py37h2b20989_7|py35hdbf6ddf_7|py36h2b20989_7|py27h2b20989_7|py27hdbf6ddf_7|py27hdbf6ddf_6|py36h2b20989_6|py27h2b
20989_6']
torchvision -> numpy[version='>=1.11'] -> numpy-base[version='1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1
.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.14.3|1.14.3|1.14.3|1
.14.3|1.14.3|1.14.3|1.14.4|1.14.4|1.14.4|1.14.4|1.14.4|1.14.4|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1
.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.1|1.15.1|1.15.1|1.15.1|1
.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.3|1.15.3|1.15.3|1.15.3|1.15.3|1.15.3|1.15.4|1.15.4|1.15.4|1.15.4|1.15.4|1.15.4|1
.15.4|1.15.4|1.15.4|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.2|1.16.2|1.16.2|1.16.2|1.16.2|1.16.2|1.16.3|1
.16.3|1.16.3|1.16.3|1.16.3|1.16.3|1.16.4|1.16.4|1.16.4|1.16.4|1.16.4|1.16.4|1.16.5|1.16.5|1.16.5|1.16.5|1.16.5|1.16.5|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1
.16.6|1.17.2.*|1.17.3.*|1.17.4.*|1.18.1.*|1.18.5.*|1.19.1|1.19.1|1.19.1|1.19.1|1.19.1|1.19.1|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.20.1|1.20.1|1.20.1|1.20.1|1.20.1|1.20.1|1.20.2|1.20.2|1.20.2|1.20.2|1.20.2|1.20.2|1.20.
3|1.20.3|1.20.3|1.20.3|1.20.3|1.20.3|1.21.2|1.17.0|1.17.0|1.17.0|1.17.0|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|>=1.9.3,<2.0a0',build='py37h2b20989_6|py27h2b20989_7|py36hdbf6ddf_7|py36h2b20989_7
|py35h2b20989_7|py37hdbf6ddf_7|py37hde5b4d6_0|py36hde5b4d6_0|py37h2b20989_7|py37hdbf6ddf_7|py36hdbf6ddf_8|py37hdbf6ddf_8|py37h2b20989_8|py35hdbf6ddf_8|py36h7cdd4dd_9|py35h3dfced4_9|py27h3dfced4_9|py27h74e8950_9|py27h81de0dd_9|py35h74e8950
_10|py27h74e8950_10|py27h81de0dd_10|py36h81de0dd_10|py37h2f8d375_10|py27h2f8d375_10|py27h2f8d375_11|py27hde5b4d6_11|py37h2f8d375_12|py27h2f8d375_12|py36h2f8d375_12|py27hde5b4d6_12|py38hde5b4d6_12|py38h2f8d375_12|py36h0ea5e3f_1|py27h0ea5e3
f_1|py36h9be14a7_1|py27h9be14a7_1|py35h9be14a7_1|py36h2b20989_0|py27hdbf6ddf_0|py35hdbf6ddf_0|py36hdbf6ddf_0|py27hdbf6ddf_0|py35hdbf6ddf_0|py37h2b20989_1|py27hdbf6ddf_1|py27h2b20989_1|py36h2b20989_2|py36hdbf6ddf_2|py36h2b20989_3|py27h2b20
989_3|py27hdbf6ddf_3|py27hdbf6ddf_4|py37hdbf6ddf_4|py36hdbf6ddf_4|py35h2b20989_4|py35h2f8d375_4|py36h2f8d375_4|py27h2f8d375_4|py35h81de0dd_4|py37h81de0dd_4|py36h81de0dd_4|py38h2f8d375_4|py27hde5b4d6_5|py36h7cdd4dd_0|py35h7cdd4dd_0|py36h3d
fced4_0|py35h3dfced4_0|py37h3dfced4_0|py36h74e8950_0|py36h81de0dd_0|py36h81de0dd_1|py37h2f8d375_1|py37h2f8d375_0|py37h2f8d375_0|py36h81de0dd_0|py27hde5b4d6_0|py36hde5b4d6_0|py37h2f8d375_0|py37hde5b4d6_0|py36h2f8d375_0|py36hde5b4d6_0|py37h
2f8d375_1|py27h2f8d375_1|py37hde5b4d6_1|py27hde5b4d6_1|py36hde5b4d6_1|py36hde5b4d6_0|py37h2f8d375_1|py36h2f8d375_1|py37hde5b4d6_1|py36hde5b4d6_1|py27hde5b4d6_1|py36h2f8d375_0|py27hde5b4d6_0|py36hde5b4d6_0|py37hde5b4d6_0|py36hde5b4d6_0|py3
7h2f8d375_0|py36hde5b4d6_0|py37hde5b4d6_0|py39h76555f2_1|py39h41b4c56_3|py38h41b4c56_3|py36hdc34a94_3|py39hdc34a94_3|py37hfa32c7d_0|py38hfa32c7d_0|py36h75fe3a5_0|py36h75fe3a5_0|py38hfa32c7d_0|py39h2ae0177_0|py37h7d8b39e_0|py38h7d8b39e_0|p
y38he2ba247_0|py37h74d4b33_0|py39h74d4b33_0|py38h39b7dee_0|py39h39b7dee_0|py37h79a1101_0|py38h2b8c604_0|py310h79a1101_0|py310h2b8c604_0|py39h2b8c604_0|py37h2b8c604_0|py39h79a1101_0|py38h79a1101_0|py37h39b7dee_0|py38h74d4b33_0|py39hfae3a4d
_0|py37he2ba247_0|py37hfae3a4d_0|py39he2ba247_0|py38hfae3a4d_0|py39h7d8b39e_0|py38h34387ca_0|py39h34387ca_0|py37h34387ca_0|py39h0f7b65f_0|py36hfa32c7d_0|py37h75fe3a5_0|py38h75fe3a5_0|py37hfa32c7d_0|py37h75fe3a5_0|py36hfa32c7d_0|py38h75fe3
a5_0|py37hdc34a94_3|py38hdc34a94_3|py36h41b4c56_3|py37h41b4c56_3|py39hfb011de_1|py27hde5b4d6_0|py27h2f8d375_0|py38hde5b4d6_0|py38h2f8d375_0|py36hde5b4d6_0|py36h2f8d375_0|py37h2f8d375_0|py37hde5b4d6_0|py27hde5b4d6_0|py27h2f8d375_0|py36h2f8
d375_0|py27hde5b4d6_0|py37h2f8d375_0|py36h2f8d375_0|py27h2f8d375_0|py27hde5b4d6_0|py37hde5b4d6_0|py36h2f8d375_0|py37h2f8d375_0|py27h2f8d375_0|py36hde5b4d6_0|py37hde5b4d6_0|py27h2f8d375_0|py37h2f8d375_0|py27h2f8d375_1|py27hde5b4d6_0|py37hd
e5b4d6_0|py36h2f8d375_0|py27h2f8d375_0|py37h2f8d375_0|py36h2f8d375_1|py27hde5b4d6_0|py27h2f8d375_0|py37hde5b4d6_0|py27h81de0dd_0|py37h81de0dd_0|py27h2f8d375_0|py36h2f8d375_0|py37h81de0dd_0|py36h81de0dd_0|py27h81de0dd_0|py36h2f8d375_0|py27
h2f8d375_0|py37h81de0dd_1|py27h81de0dd_1|py27h2f8d375_1|py36h2f8d375_1|py36h81de0dd_0|py36h2f8d375_0|py35h2f8d375_0|py35h81de0dd_0|py27h81de0dd_0|py37h81de0dd_0|py27h2f8d375_0|py37h2f8d375_0|py37h2f8d375_0|py36h2f8d375_0|py27h2f8d375_0|py
35h2f8d375_0|py35h81de0dd_0|py37h81de0dd_0|py27h81de0dd_0|py37h74e8950_0|py27h74e8950_0|py35h74e8950_0|py27h3dfced4_0|py37h7cdd4dd_0|py27h7cdd4dd_0|py36hde5b4d6_5|py37hde5b4d6_5|py27h2f8d375_5|py37h2f8d375_5|py36h2f8d375_5|py38hde5b4d6_4|
py27h81de0dd_4|py37h2f8d375_4|py35hdbf6ddf_4|py36h2b20989_4|py37h2b20989_4|py27h2b20989_4|py36hdbf6ddf_3|py37hdbf6ddf_3|py37h2b20989_3|py37hdbf6ddf_2|py27hdbf6ddf_2|py37h2b20989_2|py27h2b20989_2|py37hdbf6ddf_1|py36hdbf6ddf_1|py36h2b20989_
1|py27h2b20989_0|py36h2b20989_0|py36hdbf6ddf_0|py35h2b20989_0|py27h2b20989_0|py35h0ea5e3f_1|py36hde5b4d6_12|py37hde5b4d6_12|py37hde5b4d6_11|py36hde5b4d6_11|py36h2f8d375_11|py37h2f8d375_11|py35h2f8d375_10|py36h2f8d375_10|py35h81de0dd_10|py
37h81de0dd_10|py36h74e8950_10|py37h74e8950_10|py35h81de0dd_9|py36h74e8950_9|py37h74e8950_9|py35h74e8950_9|py37h81de0dd_9|py36h81de0dd_9|py36h3dfced4_9|py37h3dfced4_9|py37h7cdd4dd_9|py27h7cdd4dd_9|py35h7cdd4dd_9|py35h2b20989_8|py27hdbf6ddf
_8|py27h2b20989_8|py36h2b20989_8|py36hdbf6ddf_7|py27hdbf6ddf_7|py36h2b20989_7|py27h2b20989_7|py37h2f8d375_0|py36h2f8d375_0|py37h2b20989_7|py35hdbf6ddf_7|py27hdbf6ddf_7|py36hdbf6ddf_6|py27hdbf6ddf_6|py37hdbf6ddf_6|py36h2b20989_6|py27h2b209
89_6']
cupy -> numpy[version='>=1.18'] -> numpy-base[version='1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1
.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.11.3|1.14.3|1.14.3|1.14.3|1.14.3|1
.14.3|1.14.3|1.14.4|1.14.4|1.14.4|1.14.4|1.14.4|1.14.4|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1
.14.5|1.14.5|1.14.5|1.14.5|1.14.5|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.14.6|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.0|1.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1
.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.1|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.2|1.15.3|1.15.3|1.15.3|1.15.3|1.15.3|1.15.3|1.15.4|1.15.4|1.15.4|1.15.4|1.15.4|1.15.4|1.15.4|1
.15.4|1.15.4|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.0|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.1|1.16.2|1.16.2|1.16.2|1.16.2|1.16.2|1.16.2|1.16.3|1.16.3|1
.16.3|1.16.3|1.16.3|1.16.3|1.16.4|1.16.4|1.16.4|1.16.4|1.16.4|1.16.4|1.16.5|1.16.5|1.16.5|1.16.5|1.16.5|1.16.5|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1.16.6|1
.17.0|1.17.0|1.17.0|1.17.0|1.17.2.*|1.17.3.*|1.17.4.*|1.18.1.*|1.18.5.*|1.19.1|1.19.1|1.19.1|1.19.1|1.19.1|1.19.1|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.19.2|1.20.1|1.20.1|1.20.1|1.20.1|1.20.1|1.20.1|1.20.2|1.20.2|1.20.2|1.20.
2|1.20.2|1.20.2|1.20.3|1.20.3|1.20.3|1.20.3|1.20.3|1.20.3|1.21.2|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|1.9.3|>=1.9.3,<2.0a0',build='py37hdbf6ddf_6|py36hdbf6ddf_6|py27hdbf6ddf_7|py27h2b20989_7|py35h2
b20989_7|py37hdbf6ddf_7|py37h2b20989_7|py36h2b20989_7|py27hdbf6ddf_7|py37hdbf6ddf_7|py36h2b20989_8|py37h2b20989_8|py36h7cdd4dd_9|py27h7cdd4dd_9|py35h3dfced4_9|py27h74e8950_9|py27h81de0dd_9|py35h81de0dd_9|py35h74e8950_10|py27h74e8950_10|py
27h81de0dd_10|py37h2f8d375_10|py27h2f8d375_11|py36hde5b4d6_11|py37h2f8d375_12|py36h2f8d375_12|py27hde5b4d6_12|py36hde5b4d6_12|py38hde5b4d6_12|py38h2f8d375_12|py27h0ea5e3f_1|py36h9be14a7_1|py27h9be14a7_1|py35h9be14a7_1|py27hdbf6ddf_0|py27h
2b20989_0|py27hdbf6ddf_0|py35hdbf6ddf_0|py37h2b20989_1|py27hdbf6ddf_1|py36hdbf6ddf_1|py27h2b20989_1|py36h2b20989_2|py37hdbf6ddf_2|py36hdbf6ddf_2|py37hdbf6ddf_3|py36hdbf6ddf_3|py27hdbf6ddf_3|py27h2b20989_4|py27hdbf6ddf_4|py37hdbf6ddf_4|py3
6h2b20989_4|py36hdbf6ddf_4|py35h2f8d375_4|py27h81de0dd_4|py36h2f8d375_4|py27h2f8d375_4|py37h81de0dd_4|py38h2f8d375_4|py36hde5b4d6_5|py36h7cdd4dd_0|py37h7cdd4dd_0|py35h7cdd4dd_0|py37h3dfced4_0|py36h74e8950_0|py37h74e8950_0|py36h81de0dd_0|p
y37h81de0dd_0|py27h81de0dd_0|py27h2f8d375_1|py36h81de0dd_1|py37h81de0dd_1|py37h2f8d375_1|py36h2f8d375_0|py37h2f8d375_0|py36h81de0dd_0|py36hde5b4d6_0|py36hde5b4d6_0|py37h2f8d375_1|py27h2f8d375_1|py36h2f8d375_1|py37hde5b4d6_1|py27hde5b4d6_1
|py36hde5b4d6_1|py36hde5b4d6_0|py37hde5b4d6_0|py27h2f8d375_1|py37h2f8d375_1|py36h2f8d375_1|py37hde5b4d6_1|py27hde5b4d6_1|py37h2f8d375_0|py36hde5b4d6_0|py37h2f8d375_0|py36h2f8d375_0|py36hde5b4d6_0|py37hde5b4d6_0|py37h2f8d375_0|py36hde5b4d6
_0|py38h2f8d375_0|py27hde5b4d6_0|py39h76555f2_1|py38h41b4c56_3|py37h41b4c56_3|py37hdc34a94_3|py37hde5b4d6_0|py37hfa32c7d_0|py38hfa32c7d_0|py36h75fe3a5_0|py36h75fe3a5_0|py38hfa32c7d_0|py39h2ae0177_0|py37h7d8b39e_0|py38h7d8b39e_0|py38he2ba2
47_0|py37h74d4b33_0|py39h74d4b33_0|py38h39b7dee_0|py39h39b7dee_0|py37h79a1101_0|py38h2b8c604_0|py310h79a1101_0|py310h2b8c604_0|py39h2b8c604_0|py37h2b8c604_0|py39h79a1101_0|py38h79a1101_0|py37h39b7dee_0|py38h74d4b33_0|py39hfae3a4d_0|py37he
2ba247_0|py37hfae3a4d_0|py39he2ba247_0|py38hfae3a4d_0|py39h7d8b39e_0|py38h34387ca_0|py39h34387ca_0|py37h34387ca_0|py39h0f7b65f_0|py36hfa32c7d_0|py37h75fe3a5_0|py38h75fe3a5_0|py37hfa32c7d_0|py37h75fe3a5_0|py36hfa32c7d_0|py38h75fe3a5_0|py36
hde5b4d6_0|py37h2f8d375_0|py36h2f8d375_0|py39hdc34a94_3|py38hdc34a94_3|py36hdc34a94_3|py36h41b4c56_3|py39h41b4c56_3|py39hfb011de_1|py27h2f8d375_0|py38hde5b4d6_0|py37hde5b4d6_0|py36h2f8d375_0|py37h2f8d375_0|py36hde5b4d6_0|py37hde5b4d6_0|py
27hde5b4d6_0|py27h2f8d375_0|py36h2f8d375_0|py36hde5b4d6_0|py27hde5b4d6_0|py37h2f8d375_0|py36h2f8d375_0|py27h2f8d375_0|py27hde5b4d6_0|py37hde5b4d6_0|py27h2f8d375_0|py27hde5b4d6_0|py37hde5b4d6_0|py27h2f8d375_0|py36h2f8d375_0|py36hde5b4d6_1|
py27hde5b4d6_0|py36h2f8d375_0|py27h2f8d375_0|py37h2f8d375_0|py27hde5b4d6_0|py36h2f8d375_0|py37hde5b4d6_0|py37h2f8d375_0|py27h2f8d375_0|py37hde5b4d6_0|py27hde5b4d6_0|py27h81de0dd_0|py37h81de0dd_0|py27h2f8d375_0|py36h2f8d375_0|py37h81de0dd_
0|py36h81de0dd_0|py27h81de0dd_0|py37h2f8d375_0|py27h2f8d375_0|py27h81de0dd_1|py36h2f8d375_1|py36h81de0dd_0|py36h2f8d375_0|py35h2f8d375_0|py35h81de0dd_0|py27h2f8d375_0|py37h2f8d375_0|py37h2f8d375_0|py36h2f8d375_0|py27h2f8d375_0|py35h2f8d37
5_0|py35h81de0dd_0|py37h81de0dd_0|py27h81de0dd_0|py27h74e8950_0|py35h74e8950_0|py35h3dfced4_0|py36h3dfced4_0|py27h3dfced4_0|py27h7cdd4dd_0|py37hde5b4d6_5|py27hde5b4d6_5|py27h2f8d375_5|py37h2f8d375_5|py36h2f8d375_5|py38hde5b4d6_4|py36h81de
0dd_4|py35h81de0dd_4|py37h2f8d375_4|py35h2b20989_4|py35hdbf6ddf_4|py37h2b20989_4|py27h2b20989_3|py37h2b20989_3|py36h2b20989_3|py27hdbf6ddf_2|py37h2b20989_2|py27h2b20989_2|py37hdbf6ddf_1|py36h2b20989_1|py36hdbf6ddf_0|py36h2b20989_0|py35hdb
f6ddf_0|py36hdbf6ddf_0|py35h2b20989_0|py36h2b20989_0|py27h2b20989_0|py35h0ea5e3f_1|py36h0ea5e3f_1|py37hde5b4d6_12|py27h2f8d375_12|py27hde5b4d6_11|py37hde5b4d6_11|py36h2f8d375_11|py37h2f8d375_11|py35h2f8d375_10|py27h2f8d375_10|py36h2f8d375
_10|py35h81de0dd_10|py36h81de0dd_10|py37h81de0dd_10|py36h74e8950_10|py37h74e8950_10|py36h74e8950_9|py37h74e8950_9|py35h74e8950_9|py37h81de0dd_9|py36h81de0dd_9|py27h3dfced4_9|py36h3dfced4_9|py37h3dfced4_9|py37h7cdd4dd_9|py35h7cdd4dd_9|py35
h2b20989_8|py35hdbf6ddf_8|py27hdbf6ddf_8|py27h2b20989_8|py37hdbf6ddf_8|py36hdbf6ddf_8|py36hdbf6ddf_7|py27h2b20989_7|py37h2b20989_7|py35hdbf6ddf_7|py36h2b20989_7|py36hdbf6ddf_7|py27hdbf6ddf_6|py37h2b20989_6|py36h2b20989_6|py27h2b20989_6']

Package pytorch conflicts for:
torchvision -> pytorch-gpu -> pytorch[version='1.10.0|1.10.0|1.10.0|1.10.0|1.9.1|1.9.1|1.9.1|1.9.1|1.9.1|1.9.1|1.9.1|1.9.1|1.9.1|1.9.1|1.9.1|1.9.1|1.9.1|1.9.1|1.9.1|1.9.1|1.9.0|1.9.0|1.9.0|1.9.0|1.9.0|1.9.0|1.9.0|1.9.0|1.9.0|1.9.0|1.9.0|1
.9.0|1.9.0|1.9.0|1.9.0|1.9.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.7.1|1.7.1|1.7.1|1.7.1|1.7.1|1.7.1|1.7.1|1.7.1|1.7.1|1.7.1|1.7.1|1.7.1|1.7.1|1.7.1|1.7.1|1.7.1|1.6.0|1.6.0|1.6.0
|1.6.0|1.6.0|1.6.0|1.6.0|1.6.0|1.6.0|1.6.0|1.6.0|1.6.0|1.6.0|1.6.0|1.6.0|1.6.0|1.9.1|1.9.1|1.9.1|1.9.1|1.9.0|1.9.0|1.9.0|1.9.0|1.9.0|1.9.0|1.9.0|1.9.0|1.9.0|1.9.0|1.9.0|1.9.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8
.0|1.8.0|1.8.0|1.8.0|1.8.0|1.8.0|1.7.1|1.7.1|1.7.1|1.7.1|1.7.1|1.7.1|1.7.1|1.7.1|1.6.0|1.6.0|1.6.0|1.6',build='cpu_py36h63cae03_1|cpu_py38h36eccb8_1|cpu_py39h714fb45_1|cpu_py39h714fb45_2|cpu_py38h36eccb8_2|cpu_py37hafa7651_0|cpu_py36h2d15
a6b_1|cpu_py36h95c28ec_2|cpu_py38h91ab35c_2|cpu_py39hfbcbfe4_2|cpu_py39hfbcbfe4_3|cpu_py38h91ab35c_0|cpu_py39hfbcbfe4_0|cpu_py36h3564fbe_1|cpu_py37hff829bd_1|cpu_py39h818de69_1|cpu_py37hb06efa0_2|cpu_py39h818de69_2|cpu_py38h4bbe6ce_2|cpu_
py39hc5866cc_3|cpu_py39hc5866cc_0|cpu_py37hf3cc979_0|cpu_py38h1ee18c8_0|cuda92py36h7ecc001_1|cuda100py36hd82b6f9_1|cuda102py36h8620ce9_1|cuda92py37hc3ec645_1|cuda100py37h50b9e00_1|cuda92py38hb6ed0dd_1|cuda100py38h679e3f5_1|cuda92py39hde86
683_1|cuda102py38h9f8c3ab_1|cuda92py36h7ecc001_1|cuda102py36h8620ce9_1|cuda100py36hd82b6f9_1|cuda102py37h4d98c68_1|cuda100py37h50b9e00_1|cuda92py39hde86683_1|cuda100py39h2b73809_1|cuda92py38hb6ed0dd_1|cuda101py36h42dc283_1|cuda102py38h9f8
c3ab_1|cuda102py38h540557e_0|cuda110py36h7ef7e1d_0|cuda110py37h5fb8b0b_0|cuda110py39hbc72f07_0|cuda112py39h716d6ff_1|cuda111py36h3cb1cac_1|cuda112py36h5fea6e2_1|cuda111py37h50e976f_1|cuda112py37h946b90b_1|cuda111py39hc274426_1|cuda102py36
he3537ca_1|cuda110py36h768fbb7_1|cuda112py39hbeb36f3_1|cuda111py38h5169e65_1|cuda102py39h9bf10ef_1|cuda110py38hc2289b8_1|cuda112py36h755b813_1|cuda102py37h92fd811_1|cuda111py37h78388d7_1|cuda112py36h36e649e_3|cuda111py36h8a2106e_3|cuda112
py37h3bec1eb_3|cuda102py36h3d4679f_3|cuda102py37h98b7ee3_3|cuda102py38ha031fbe_3|cuda110py36he570edd_3|cuda110py37h4a33b93_3|cuda111py37he371307_0|cuda110py37h4a33b93_0|cuda112py38h4f2a933_0|cuda102py37h98b7ee3_0|cuda110py39h5cf7045_0|cud
a111py39hb4a4491_0|cuda112py39h4e14dd4_0|cuda102py38ha031fbe_0|cuda111py38h2f85826_0|cuda112py37h3bec1eb_0|cuda102py39h2fcd037_0|cuda110py38hf84197b_0|cuda110py39h5cf7045_3|cuda110py38hf84197b_3|cuda102py39h2fcd037_3|cuda111py38h2f85826_3
|cuda111py37he371307_3|cuda111py39hb4a4491_3|cuda112py39h4e14dd4_3|cuda112py38h4f2a933_3|cuda112py38h3d13190_1|cuda110py39hd6acddb_1|cuda110py37h00edf66_1|cuda111py36hc5445e6_1|cuda112py37hcb91bf2_1|cuda102py38hf03d9dd_1|cuda111py39h37e5b
68_1|cuda112py38h3bc52bc_1|cuda111py38he2736ed_1|cuda110py38h65e529b_0|cuda102py39hf89b2ab_0|cuda102py37h4454d97_0|cuda102py36hf4eb8d7_0|cuda101py39h41d04a9_1|cuda100py38h679e3f5_1|cuda102py39h09d0254_1|cuda101py38h2499a06_1|cuda92py37hc3
ec645_1|cuda101py37h7589291_1|cuda101py39h41d04a9_1|cuda100py39h2b73809_1|cuda102py39h09d0254_1|cuda101py38h2499a06_1|cuda101py37h7589291_1|cuda102py37h4d98c68_1|cuda101py36h42dc283_1|cpu_py38h1ee18c8_3|cpu_py36ha8b20dc_3|cpu_py37hf3cc979
_3|cpu_py36h1c7b8ea_2|cpu_py38hfb3baa6_1|cpu_py36h95c28ec_0|cpu_py37hd5260e0_0|cpu_py36h95c28ec_3|cpu_py38h91ab35c_3|cpu_py37hd5260e0_3|cpu_py37hd5260e0_2|cpu_py38hd248515_1|cpu_py39h0fbb4fb_1|cpu_py37ha70c682_1|cpu_py39h0fbb4fb_0|cpu_py3
8he614459_0|cpu_py36h2ecc29a_0|cpu_py37hf1c21f6_2|cpu_py36h63cae03_2|cpu_py37hf1c21f6_1|cpu_py36h63cae03_1|cpu_py38h36eccb8_1|cpu_py37hf1c21f6_1']
pytorch
torchvision -> pytorch[version='*|*|1.10.0|1.10.1|1.9.1|1.9.0|1.8.1|1.8.0|1.7.1|1.7.0|1.6.0|1.5.1|1.5.0|1.4.0|1.3.1|1.3.0|1.2.0|1.2.0+cu92|>=1.1.0|>=1.0.0|>=0.4|>=0.3|>=1.8.0|>=1.8.0|1.7.1.*|1.3.1.*|1.2.0.*|1.1.*',build='cuda*|cuda*|cpu*|
cpu*']

Package libtiff conflicts for:
opencv -> libopencv==4.5.5=py38hd60e7aa_0 -> libtiff[version='>=4.1.0,<5.0a0|>=4.2.0,<5.0a0|>=4.3.0,<5.0a0']
opencv -> libtiff[version='4.0.*|>=4.0.10,<5.0a0|>=4.0.9,<5.0a0|>=4.0.8,<4.0.10|>=4.0.3,<4.0.8']

Package gmp conflicts for:
pytorch -> libgcc -> gmp[version='>=4.2']
opencv -> ffmpeg=4.1 -> gmp[version='>=6.1.2|>=6.1.2,<7.0a0|>=6.2.1,<7.0a0|>=6.2.0,<7.0a0']
torchvision -> ffmpeg[version='>=4.2'] -> gmp[version='>=6.1.2,<7.0a0|>=6.1.2|>=6.2.1,<7.0a0|>=6.2.0,<7.0a0']

Package pypy3.6 conflicts for:
cupy -> python[version='>=3.6,<3.7.0a0'] -> pypy3.6[version='7.3.*|7.3.0.*|7.3.1.*|7.3.2.*|7.3.3.*']
cupy -> pypy3.6[version='>=7.3.1|>=7.3.2|>=7.3.3']The following specifications were found to be incompatible with your system:

  - feature:/linux-64::__glibc==2.17=0
  - feature:|@/linux-64::__glibc==2.17=0
  - cudatoolkit=11.3 -> __glibc[version='>=2.17,<3.0.a0']
  - cudatoolkit=11.3 -> libgcc-ng[version='>=9.3.0'] -> __glibc[version='>=2.17']
  - libjpeg-turbo -> libgcc-ng[version='>=9.3.0'] -> __glibc[version='>=2.17']
  - numba -> libgcc-ng[version='>=9.3.0'] -> __glibc[version='>=2.17']
  - opencv -> libgcc-ng[version='>=7.3.0'] -> __glibc[version='>=2.17']
  - pkg-config -> libgcc-ng[version='>=7.5.0'] -> __glibc[version='>=2.17']
  - python=3.9 -> libgcc-ng[version='>=9.3.0'] -> __glibc[version='>=2.17']
  - pytorch -> __glibc[version='>=2.17|>=2.17,<3.0.a0']
  - torchvision -> __glibc[version='>=2.17|>=2.17,<3.0.a0']

Your installed version is: 2.17

Note that strict channel priority may have removed packages required for satisfiability.

Video support

Feature request

How would I go about using FFCV to write and load a video dataset? I could encode it as sequences of JPGs to use your decoders, etc. However, it might take some work to load multiple images per batch element in parallel, along with parallelizing across batch elements.

non_blocking=True still fails, lacking corresponding test case

The non_blocking=True option still leads to nonsense values being returned by the dataloader. I observed this issue as part of a much larger system but have been unable to isolate a test case, so putting here in case anyone has seen something similar, otherwise I will get back to looking for a test case in a few days.

The loader code (as part of the larger system) is:

    return  Loader(data_path,
                batch_size=2048,
                num_workers=10,
                order=OrderOption.QUASI_RANDOM,
                indices=subset,
                drop_last=True,
                os_cache=True,
                pipelines={
                    'a': [NDArrayDecoder(), ToTensor(), ToDevice(ch.device('cuda:0'), non_blocking=False)],
                    'b': [NDArrayDecoder(), ToTensor(), ToDevice(ch.device('cuda:0'), non_blocking=False)],
                    'idx': [IntDecoder(), ToTensor(), Squeeze(), ToDevice(ch.device('cuda:0'), non_blocking=False)]
                })

And the corresponding loop that fails is simply:

a_table = ch.zeros(a_shape, dtype=ch.float32)
    w_grad_avg = ch.zeros_like(weight)
    b_grad_avg = ch.zeros_like(bias)

    done_inds = ch.zeros(num_outputs, dtype=ch.bool)
    residual = ch.zeros((batch_size, num_outputs), dtype=ch.float32).to(weight.device)

    w_saga = ch.zeros_like(weight)

    mm_mu, mm_sig = pct, np.sqrt(pct * (1-pct))
    for t in range(nepochs):
        total_loss = 0
        iterator = tqdm(loader)
        for bool_X, y, idx in iterator:
            # BS x NUM_CLASSES
            a_prev = a_table[idx].cuda(non_blocking=True)

            X = bool_X.float()
            bool_X.logical_not_()

            X -= mm_mu
            X /= mm_sig
            B = bool_X.sum(0) if train_mode else batch_size

            ch.mm(X, weight, out=residual)
            residual += bias
            residual -= y

            if train_mode: residual *= bool_X

            residual -= a_prev
            ch.mm(X.T, residual, out=w_saga)
            w_saga /= B
            w_saga += w_grad_avg

Replacing the loop with a pass fixes the issue, but none of the operations in the loop seem particularly important. Also changing non_blocking to false fixes it, so seems likely the problem is there.

Small Bug in the quickstart doc

For the first code in the quickstart,

'image': RGBImageField({ max_resolution=256, jpeg_quality=jpeg_quality }),

There shouldn't be a { }. Or it would lead to an error.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.