PyTorch

This example requires the torchvision package: https://github.com/pytorch/vision/ . Please note, that SOL does not support the use of model.eval() or model.train(). SOL always assumes model.eval() for running inference, and model.train() when running training.

In v0.5.1 we added an lazy evaluation of sol.optimize(...) which removes the necessity to provide an example input. The model instead gets created the first time it gets executed.

import torch
import sol
import torchvision.models as models

''' Optimizing Model '''
py_model  = models.__dict__["alexnet"]()
input	  = torch.rand(32, 3, 224, 224)

# Use vdims=[True] if you plan to use changing batchsizes
sol_model = sol.optimize(py_model, vdims=[True])

''' Run training '''
sol_model.train()

# You cannot initialize the optimizer at this point. You need to wait until
# you have executed the model at least once, so SOL has compiled it.
optimizer = None
for batch in ...:
	input, target = ...
	output = sol_model(input)
	loss = loss_func(output, target)
	# After running the model once, you can safely initialize the optimizer
	if optimizer is None:
		optimizer = torch.optim.Adam(sol_model.parameters(), ...)
	optimizer.zero_grad()
	loss.backward()
	optimizer.step()
	...

''' Run validation '''
sol_model.eval()
with torch.no_grad():
	for batch in ...:
		input = ...
		output = sol_model(input)
		...

F.A.Q.

How do I store/load a Pytorch model?

For storing/loading a SOL PyTorch model, use model.state_dict() and model.load_state_dict(...) methods.

# Storing
sol_model = sol.optimize(pytorch_model, [...])
torch.save(sol_model.state_dict(), PATH)

# Loading
sol_model = sol.optimize(pytorch_model)
sol_model.load_state_dict(torch.load(PATH))

More information on loading/storing the weights can be found here

Can I use torch.compile(...) with SOL?
Yes, with SOL ≥ v0.5.2 and PyTorch ≥ 2.0 you can use torch.compile(model, backend='sol') with SOL! But it provides less features than using sol.optimize(...), e.g., you cannot specify the vdims. Instead vdims=[True] is used by default. You also need to manually import import sol.pytorch to ensure that SOL is correctly registered as backend into PyTorch. This support is still experimental!

I get strange errors when running sol.optimize(model, ...), e.g., in Huggingface Transformers.
Huggingface Transformers are incompatible to PyTorch's torch.jit.script(...) parser and can only be used with torch.jit.trace(...) (see here). As torch.jit.trace(...) is much more restricted than torch.jit.script(...) in terms of the input and output the models we use torch.jit.script(...) as default parser. If you encounter problems, you can try running sol.optimize(model, ..., trace=True) to use the torch.jit.trace(...) parser instead. But be advised, that you might need to simplify your model input/output accordingly. Please see the PyTorch documentation for more details. The arguments strict and check_trace are passed to torch.jit.trace(...) and are False by default.

How can I update/downgrade to another PyTorch version?
Before switching version, please have a look at the compatibility list if your PyTorch version is supported by SOL. If yes, and if you are using SOL with the NEC SX-Aurora TSUBASA, you can switch PyTorch using pip3 install veda-pytorch~={VERSION}. If you are using SOL with any other device, then you can just use pip3 install torch~={VERSION}.

The SOL model returns more outputs than the PyTorch model.

This error occurs, i.e., in TorchVisions Inception V3 or GoogleNet. These models return 1 output in inference and 2 outputs in training mode. SOL relies on the TorchScript parser. Unfortunately the TorchVision models are build in a way that hides the change of output behavior from TorchScript. However, you can implement this yourself as follows:

from torchvision import models

class Wrap(torch.nn.Module):
	def __init__(self, model):
		super().__init__()
		self.model = model

	def forward(self, x):
		out = self.model(x)
		if torch.jit.is_scripting():
			return (out[0], out[1]) if self.training else (out[0], None)
		return (out[0], out[1]) if self.training else (out, None)

model = Wrap(models.inception_v3())

# use only one output
model.training = False
sol_model = sol.optimize(model, ...)

# use two outputs
model.training = True
sol_model = sol.optimize(model, ...)

SOL currently does not support to dynamically switch between these two modes and requires to compile the model for each mode separately.

How can I use Pytorch Lightning with SOL?

You can just pass your Pytorch Lightning model to SOL's `sol.optimize(...)` method.

class ResNet50(pl.LightningModule):
	def __init__(self):
		super().__init__()
		self.model = torchvision.models.resnet50()

	def forward(self, x):
		return self.model(x)

model = sol.optimize(ResNet50())

Can I implement custom layers using SOL?
Please refer to Custom Layers.

Supported Layers

Please refer to https://pytorch.org/docs/stable/ for how these functions are used. This documentation only contains which layers, functions and tensor functionality is currently implemented within SOL.

Layers

  • aten::Float
  • aten::Bool
  • aten::Int
  • aten::IntImplicit
  • aten::ScalarImplicit
  • aten::__and__
  • aten::__contains__
  • aten::__derive_index
  • aten::__getitem__
  • aten::__is__
  • aten::__isnot__
  • aten::__not__
  • aten::__or__
  • aten::__range_length
  • aten::_convolution
  • aten::_set_item
  • aten::abs
  • aten::absolute
  • aten::acos
  • aten::acosh
  • aten::adaptive_avg_pool1d
  • aten::adaptive_avg_pool2d
  • aten::adaptive_avg_pool3d
  • aten::adaptive_max_pool1d
  • aten::adaptive_max_pool2d
  • aten::adaptive_max_pool3d
  • aten::add
  • aten::addbmm
  • aten::addcdiv
  • aten::addcmul
  • aten::addmm
  • aten::alpha_dropout
  • aten::append
  • aten::arange
  • aten::arccos
  • aten::arccosh
  • aten::arcsin
  • aten::arcsinh
  • aten::arctan
  • aten::arctanh
  • aten::argmax
  • aten::argmin
  • aten::as_tensor
  • aten::asin
  • aten::asinh
  • aten::atan
  • aten::atanh
  • aten::avg_pool1d
  • aten::avg_pool2d
  • aten::avg_pool3d
  • aten::batch_norm
  • aten::bernoulli
  • aten::bmm
  • aten::broadcast_tensors
  • aten::cat
  • aten::ceil
  • aten::celu
  • aten::chunk
  • aten::clamp
  • aten::clamp_max
  • aten::clamp_min
  • aten::clone
  • aten::complex
  • aten::concat
  • aten::constant_pad_nd
  • aten::contiguous
  • aten::conv1d
  • aten::conv2d
  • aten::conv3d
  • aten::conv_transpose1d
  • aten::conv_transpose2d
  • aten::conv_transpose3d
  • aten::copy
  • aten::cos
  • aten::cosh
  • aten::cumsum
  • aten::detach
  • aten::dict
  • aten::dim
  • aten::div
  • aten::divide
  • aten::dropout
  • aten::einsum
  • aten::elu
  • aten::embedding
  • aten::empty
  • aten::eq
  • aten::equal
  • aten::erf
  • aten::exp
  • aten::exp2
  • aten::expand
  • aten::expand_as
  • aten::expm1
  • aten::fft_fft
  • aten::fft_fft2
  • aten::fft_fftn
  • aten::fft_hfft
  • aten::fft_ifft
  • aten::fft_ifft2
  • aten::fft_ifftn
  • aten::fft_ihfft
  • aten::fft_irfft
  • aten::fft_irfft2
  • aten::fft_irfftn
  • aten::fft_rfft
  • aten::fft_rfft2
  • aten::fft_rfftn
  • aten::fill
  • aten::flatten
  • aten::floor
  • aten::floor_divide
  • aten::floordiv
  • aten::fmod
  • aten::format
  • aten::lift_fresh
  • aten::frobenius_norm
  • aten::ge
  • aten::gelu
  • aten::greater
  • aten::greater_equal
  • aten::group_norm
  • aten::gru
  • aten::gru_cell
  • aten::gt
  • aten::hardshrink
  • aten::hardsigmoid
  • aten::hardswish
  • aten::hardtanh
  • aten::imag
  • aten::index
  • aten::instance_norm
  • aten::is_floating_point
  • aten::isfinite
  • aten::isinf
  • aten::isnan
  • aten::items
  • aten::l1_loss
  • aten::layer_norm
  • aten::le
  • aten::leaky_relu
  • aten::len
  • aten::linear
  • aten::list
  • aten::log
  • aten::log10
  • aten::log1p
  • aten::log2
  • aten::log_sigmoid
  • aten::log_softmax
  • aten::logaddexp
  • aten::logaddexp2
  • aten::logical_and
  • aten::logical_not
  • aten::logical_or
  • aten::logical_xor
  • aten::lstm
  • aten::lstm_cell
  • aten::lt
  • aten::matmul
  • aten::masked_fill
  • aten::max
  • aten::max_pool1d
  • aten::max_pool1d_with_indices
  • aten::max_pool2d
  • aten::max_pool2d_with_indices
  • aten::max_pool3d
  • aten::max_pool3d_with_indices
  • aten::max_unpool1d
  • aten::max_unpool2d
  • aten::max_unpool3d
  • aten::maximum
  • aten::mean
  • aten::meshgrid
  • aten::min
  • aten::minimum
  • aten::mse_loss
  • aten::mul
  • aten::multiply
  • aten::narrow
  • aten::narrow_copy
  • aten::ne
  • aten::neg
  • aten::negative
  • aten::new_full
  • aten::norm
  • aten::not_equal
  • aten::nuclear_norm
  • aten::numel
  • aten::ones
  • aten::ones_like
  • aten::pad
  • aten::percentFormat
  • aten::permute
  • aten::pow
  • aten::prelu
  • aten::prod
  • aten::rand
  • aten::rand_like
  • aten::randint
  • aten::randint_like
  • aten::randn
  • aten::randn_like
  • aten::real
  • aten::reciprocal
  • aten::relu
  • aten::relu6
  • aten::remainder
  • aten::repeat
  • aten::reshape
  • aten::rnn_relu
  • aten::rnn_relu_cell
  • aten::rnn_tanh
  • aten::rnn_tanh_cell
  • aten::rrelu
  • aten::rsqrt
  • aten::rsub
  • aten::select
  • aten::selu
  • aten::sigmoid
  • aten::sign
  • aten::silu
  • aten::sin
  • aten::sinh
  • aten::size
  • aten::slice
  • aten::smooth_l1_loss
  • aten::softmax
  • aten::softmin
  • aten::softplus
  • aten::softshrink
  • aten::split
  • aten::unbind
  • aten::sqrt
  • aten::square
  • aten::squeeze
  • aten::stack
  • aten::str
  • aten::sub
  • aten::sum
  • aten::tan
  • aten::tanh
  • aten::tensor
  • aten::tile
  • aten::to
  • aten::transpose
  • aten::tril
  • aten::triu
  • aten::unsqueeze
  • aten::upsample_bicubic2d
  • aten::upsample_bilinear2d
  • aten::upsample_linear1d
  • aten::upsample_nearest1d
  • aten::upsample_nearest2d
  • aten::upsample_nearest3d
  • aten::upsample_trilinear3d
  • aten::values
  • aten::var
  • aten::view
  • aten::warn
  • aten::where
  • aten::zeros
  • aten::zeros_like
  • prim::CallFunction
  • prim::Constant
  • prim::CreateObject
  • prim::DictConstruct
  • prim::GetAttr
  • prim::If
  • prim::ListConstruct
  • prim::ListIndex
  • prim::ListUnpack
  • prim::Loop
  • prim::NumToTensor
  • prim::Print
  • prim::RaiseException
  • prim::SetAttr
  • prim::TupleConstruct
  • prim::TupleIndex
  • prim::TupleUnpack
  • prim::Uninitialized
  • prim::device
  • prim::dtype
  • prim::isinstance
  • prim::max
  • prim::min
  • prim::layout
  • prim::unchecked_cast
  • sol::custom

Tested Models

TorchVision
  • alexnet
  • convnext_base
  • convnext_large
  • convnext_small
  • convnext_tiny
  • densenet121
  • densenet161
  • densenet169
  • densenet201
  • efficientnet_b0
  • efficientnet_b1
  • efficientnet_b2
  • efficientnet_b3
  • efficientnet_b4
  • efficientnet_b5
  • efficientnet_b6
  • efficientnet_b7
  • efficientnet_v2_l
  • efficientnet_v2_m
  • efficientnet_v2_s
  • lraspp_mobilenet_v3_large
  • mnasnet0_5
  • mnasnet0_75
  • mnasnet1_0
  • mnasnet1_3
  • mobilenet_v2
  • mobilenet_v3_large
  • mobilenet_v3_small
  • quantized_mobilenet_v2
  • quantized_mobilenet_v3_large
  • quantized_resnet18
  • quantized_resnet50
  • quantized_resnext101_32x8d
  • quantized_resnext101_64x4d
  • quantized_shufflenet_v2_x0_5
  • quantized_shufflenet_v2_x1_0
  • quantized_shufflenet_v2_x1_5
  • quantized_shufflenet_v2_x2_0
  • regnet_x_16gf
  • regnet_x_1_6gf
  • regnet_x_32gf
  • regnet_x_3_2gf
  • regnet_x_400mf
  • regnet_x_800mf
  • regnet_x_8gf
  • regnet_y_128gf
  • regnet_y_16gf
  • regnet_y_1_6gf
  • regnet_y_32gf
  • regnet_y_3_2gf
  • regnet_y_400mf
  • regnet_y_800mf
  • regnet_y_8gf
  • resnet101
  • resnet152
  • resnet18
  • resnet34
  • resnet50
  • resnext101_32x8d
  • resnext101_64x4d
  • resnext50_32x4d
  • shufflenet_v2_x0_5
  • shufflenet_v2_x1_0
  • shufflenet_v2_x1_5
  • shufflenet_v2_x2_0
  • squeezenet1_0
  • squeezenet1_1
  • vgg11
  • vgg11_bn
  • vgg13
  • vgg13_bn
  • vgg16
  • vgg16_bn
  • vgg19
  • vgg19_bn
  • wide_resnet101_2
  • wide_resnet50_2
Huggingface
  • BertModel
  • BertForSequenceClassification
  • DistilBertForTokenClassification
TIMM
  • adv_inception_v3
  • beit_base_patch16_224
  • beit_base_patch16_224_in22k
  • beit_base_patch16_384
  • beit_large_patch16_224
  • beit_large_patch16_224_in22k
  • beit_large_patch16_384
  • beit_large_patch16_512
  • beitv2_base_patch16_224
  • beitv2_base_patch16_224_in22k
  • beitv2_large_patch16_224
  • beitv2_large_patch16_224_in22k
  • botnet26t_256
  • botnet50ts_256
  • cait_m36_384
  • cait_m48_448
  • cait_s24_224
  • cait_s24_384
  • cait_s36_384
  • cait_xs24_384
  • cait_xxs24_224
  • cait_xxs24_384
  • cait_xxs36_224
  • cait_xxs36_384
  • coat_lite_mini
  • coat_lite_small
  • coat_lite_tiny
  • coat_mini
  • coat_tiny
  • coatnet_0_224
  • coatnet_0_rw_224
  • coatnet_1_224
  • coatnet_1_rw_224
  • coatnet_2_224
  • coatnet_2_rw_224
  • coatnet_3_224
  • coatnet_3_rw_224
  • coatnet_4_224
  • coatnet_5_224
  • coatnet_bn_0_rw_224
  • coatnet_nano_cc_224
  • coatnet_nano_rw_224
  • coatnet_pico_rw_224
  • coatnet_rmlp_0_rw_224
  • coatnet_rmlp_1_rw_224
  • coatnet_rmlp_2_rw_224
  • coatnet_rmlp_3_rw_224
  • coatnet_rmlp_nano_rw_224
  • coatnext_nano_rw_224
  • convmixer_1024_20_ks9_p14
  • convmixer_1536_20
  • convmixer_768_32
  • convnext_atto
  • convnext_atto_ols
  • convnext_base
  • convnext_base_384_in22ft1k
  • convnext_base_in22ft1k
  • convnext_base_in22k
  • convnext_femto
  • convnext_femto_ols
  • convnext_large
  • convnext_large_384_in22ft1k
  • convnext_large_in22ft1k
  • convnext_large_in22k
  • convnext_nano
  • convnext_nano_ols
  • convnext_pico
  • convnext_pico_ols
  • convnext_small
  • convnext_small_384_in22ft1k
  • convnext_small_in22ft1k
  • convnext_small_in22k
  • convnext_tiny
  • convnext_tiny_384_in22ft1k
  • convnext_tiny_hnf
  • convnext_tiny_in22ft1k
  • convnext_tiny_in22k
  • convnext_xlarge_384_in22ft1k
  • convnext_xlarge_in22ft1k
  • convnext_xlarge_in22k
  • cs3darknet_focus_l
  • cs3darknet_focus_m
  • cs3darknet_focus_s
  • cs3darknet_focus_x
  • cs3darknet_l
  • cs3darknet_m
  • cs3darknet_s
  • cs3darknet_x
  • cs3edgenet_x
  • cs3se_edgenet_x
  • cs3sedarknet_l
  • cs3sedarknet_x
  • cs3sedarknet_xdw
  • cspdarknet53
  • cspresnet50
  • cspresnet50d
  • cspresnet50w
  • cspresnext50
  • darknet17
  • darknet21
  • darknet53
  • darknetaa53
  • deit3_base_patch16_224
  • deit3_base_patch16_224_in21ft1k
  • deit3_base_patch16_384
  • deit3_base_patch16_384_in21ft1k
  • deit3_huge_patch14_224
  • deit3_huge_patch14_224_in21ft1k
  • deit3_large_patch16_224
  • deit3_large_patch16_224_in21ft1k
  • deit3_large_patch16_384
  • deit3_large_patch16_384_in21ft1k
  • deit3_medium_patch16_224
  • deit3_medium_patch16_224_in21ft1k
  • deit3_small_patch16_224
  • deit3_small_patch16_224_in21ft1k
  • deit3_small_patch16_384
  • deit3_small_patch16_384_in21ft1k
  • deit_base_distilled_patch16_224
  • deit_base_distilled_patch16_384
  • deit_base_patch16_224
  • deit_base_patch16_384
  • deit_small_distilled_patch16_224
  • deit_small_patch16_224
  • deit_tiny_distilled_patch16_224
  • deit_tiny_patch16_224
  • densenet121
  • densenet121d
  • densenet161
  • densenet169
  • densenet201
  • densenet264
  • dpn107
  • dpn131
  • dpn68
  • dpn68b
  • dpn92
  • dpn98
  • eca_botnext26ts_256
  • eca_resnet33ts
  • eca_resnext26ts
  • eca_vovnet39b
  • ecaresnet101d
  • ecaresnet101d_pruned
  • ecaresnet200d
  • ecaresnet269d
  • ecaresnet26t
  • ecaresnet50d
  • ecaresnet50d_pruned
  • ecaresnet50t
  • ecaresnetlight
  • ecaresnext26t_32x4d
  • ecaresnext50t_32x4d
  • efficientnet_b0
  • efficientnet_b0_g16_evos
  • efficientnet_b0_g8_gn
  • efficientnet_b0_gn
  • efficientnet_b1
  • efficientnet_b1_pruned
  • efficientnet_b2
  • efficientnet_b2_pruned
  • efficientnet_b2a
  • efficientnet_b3
  • efficientnet_b3_g8_gn
  • efficientnet_b3_gn
  • efficientnet_b3_pruned
  • efficientnet_b3a
  • efficientnet_b4
  • efficientnet_b5
  • efficientnet_b6
  • efficientnet_cc_b0_4e
  • efficientnet_cc_b0_8e
  • efficientnet_cc_b1_8e
  • efficientnet_el
  • efficientnet_el_pruned
  • efficientnet_em
  • efficientnet_es
  • efficientnet_es_pruned
  • efficientnet_l2
  • efficientnet_lite0
  • efficientnet_lite1
  • efficientnet_lite2
  • efficientnet_lite3
  • efficientnet_lite4
  • efficientnetv2_m
  • efficientnetv2_rw_s
  • efficientnetv2_rw_t
  • efficientnetv2_s
  • efficientnetv2_xl
  • ens_adv_inception_resnet_v2
  • ese_vovnet19b_dw
  • ese_vovnet19b_slim
  • ese_vovnet19b_slim_dw
  • ese_vovnet39b
  • ese_vovnet39b_evos
  • ese_vovnet57b
  • ese_vovnet99b
  • fbnetc_100
  • fbnetv3_b
  • fbnetv3_d
  • fbnetv3_g
  • gc_efficientnetv2_rw_t
  • gcresnet33ts
  • gcresnet50t
  • gcresnext26ts
  • gcresnext50ts
  • gcvit_base
  • gcvit_small
  • gcvit_tiny
  • gcvit_xtiny
  • gcvit_xxtiny
  • gernet_l
  • gernet_m
  • gernet_s
  • ghostnet_050
  • ghostnet_100
  • ghostnet_130
  • gluon_inception_v3
  • gluon_resnet101_v1b
  • gluon_resnet101_v1c
  • gluon_resnet101_v1d
  • gluon_resnet101_v1s
  • gluon_resnet152_v1b
  • gluon_resnet152_v1c
  • gluon_resnet152_v1d
  • gluon_resnet152_v1s
  • gluon_resnet18_v1b
  • gluon_resnet34_v1b
  • gluon_resnet50_v1b
  • gluon_resnet50_v1c
  • gluon_resnet50_v1d
  • gluon_resnet50_v1s
  • gluon_resnext101_32x4d
  • gluon_resnext101_64x4d
  • gluon_resnext50_32x4d
  • gluon_senet154
  • gluon_seresnext101_32x4d
  • gluon_seresnext101_64x4d
  • gluon_seresnext50_32x4d
  • gluon_xception65
  • gmixer_12_224
  • gmixer_24_224
  • gmlp_b16_224
  • gmlp_s16_224
  • gmlp_ti16_224
  • hardcorenas_a
  • hardcorenas_b
  • hardcorenas_c
  • hardcorenas_d
  • hardcorenas_e
  • ig_resnext101_32x16d
  • ig_resnext101_32x32d
  • ig_resnext101_32x48d
  • ig_resnext101_32x8d
  • inception_resnet_v2
  • inception_v3
  • inception_v4
  • jx_nest_base
  • jx_nest_small
  • jx_nest_tiny
  • lcnet_035
  • lcnet_035
  • lcnet_050
  • lcnet_050
  • lcnet_075
  • lcnet_075
  • lcnet_100
  • lcnet_100
  • lcnet_150
  • lcnet_150
  • legacy_senet154
  • legacy_seresnet101
  • legacy_seresnet18
  • legacy_seresnet34
  • legacy_seresnet50
  • legacy_seresnext101_32x4d
  • legacy_seresnext26_32x4d
  • legacy_seresnext50_32x4d
  • maxvit_nano_rw_256
  • maxvit_pico_rw_256
  • maxvit_rmlp_nano_rw_256
  • maxvit_rmlp_pico_rw_256
  • maxvit_rmlp_small_rw_224
  • maxvit_rmlp_small_rw_256
  • maxvit_rmlp_tiny_rw_256
  • maxvit_small_224
  • maxvit_tiny_224
  • maxvit_tiny_rw_224
  • maxvit_tiny_rw_256
  • maxxvit_rmlp_nano_rw_256
  • maxxvit_rmlp_small_rw_256
  • maxxvit_rmlp_tiny_rw_256
  • mixer_b16_224
  • mixer_b16_224
  • mixer_b16_224_in21k
  • mixer_b16_224_in21k
  • mixer_b16_224_miil
  • mixer_b16_224_miil
  • mixer_b16_224_miil_in21k
  • mixer_b16_224_miil_in21k
  • mixer_b32_224
  • mixer_b32_224
  • mixer_l16_224
  • mixer_l16_224
  • mixer_l16_224_in21k
  • mixer_l16_224_in21k
  • mixer_l32_224
  • mixer_l32_224
  • mixer_s16_224
  • mixer_s32_224
  • mixnet_l
  • mixnet_m
  • mixnet_s
  • mixnet_xl
  • mixnet_xxl
  • mnasnet_050
  • mnasnet_075
  • mnasnet_100
  • mnasnet_140
  • mnasnet_a1
  • mnasnet_b1
  • mnasnet_small
  • mobilenetv2_035
  • mobilenetv2_050
  • mobilenetv2_075
  • mobilenetv2_100
  • mobilenetv2_110d
  • mobilenetv2_120d
  • mobilenetv2_140
  • mobilenetv3_large_075
  • mobilenetv3_large_100
  • mobilenetv3_large_100_miil
  • mobilenetv3_large_100_miil_in21k
  • mobilenetv3_rw
  • mobilenetv3_small_050
  • mobilenetv3_small_075
  • mobilenetv3_small_100
  • mobilevit_s
  • mobilevit_xs
  • mobilevit_xxs
  • mobilevitv2_050
  • mobilevitv2_075
  • mobilevitv2_100
  • mobilevitv2_125
  • mobilevitv2_150
  • mobilevitv2_150_384_in22ft1k
  • mobilevitv2_150_in22ft1k
  • mobilevitv2_175
  • mobilevitv2_175_384_in22ft1k
  • mobilevitv2_175_in22ft1k
  • mobilevitv2_200
  • mobilevitv2_200_384_in22ft1k
  • mobilevitv2_200_in22ft1k
  • nest_base
  • nest_base
  • nest_small
  • nest_tiny
  • pvt_v2_b0
  • pvt_v2_b1
  • pvt_v2_b2
  • pvt_v2_b2_li
  • pvt_v2_b3
  • pvt_v2_b4
  • pvt_v2_b5
  • pvt_v2_b5
  • regnetv_040
  • regnetv_064
  • regnetx_002
  • regnetx_004
  • regnetx_006
  • regnetx_008
  • regnetx_016
  • regnetx_032
  • regnetx_040
  • regnetx_064
  • regnetx_080
  • regnetx_120
  • regnetx_160
  • regnetx_320
  • regnety_002
  • regnety_004
  • regnety_006
  • regnety_008
  • regnety_016
  • regnety_032
  • regnety_040
  • regnety_040s_gn
  • regnety_064
  • regnety_080
  • regnety_120
  • regnety_160
  • regnety_320
  • regnetz_005
  • regnetz_040
  • regnetz_040h
  • regnetz_b16
  • regnetz_b16_evos
  • regnetz_c16
  • regnetz_c16_evos
  • regnetz_d32
  • regnetz_d8
  • regnetz_d8_evos
  • regnetz_e8
  • repvgg_a2
  • repvgg_b0
  • repvgg_b1
  • repvgg_b1g4
  • repvgg_b2
  • repvgg_b2g4
  • repvgg_b3
  • repvgg_b3g4
  • res2net101_26w_4s
  • res2net50_14w_8s
  • res2net50_26w_4s
  • res2net50_26w_6s
  • res2net50_26w_8s
  • res2net50_48w_2s
  • res2next50
  • resmlp_12_224
  • resmlp_12_224_dino
  • resmlp_12_distilled_224
  • resmlp_24_224
  • resmlp_24_224_dino
  • resmlp_24_distilled_224
  • resmlp_36_224
  • resmlp_36_distilled_224
  • resmlp_big_24_224
  • resmlp_big_24_224_in22ft1k
  • resmlp_big_24_distilled_224
  • resnest101e
  • resnest14d
  • resnest200e
  • resnest269e
  • resnest26d
  • resnest50d
  • resnest50d_1s4x24d
  • resnest50d_4s2x40d
  • resnet101
  • resnet101d
  • resnet10t
  • resnet14t
  • resnet152
  • resnet152d
  • resnet18
  • resnet18d
  • resnet200
  • resnet200d
  • resnet26
  • resnet26d
  • resnet26t
  • resnet32ts
  • resnet33ts
  • resnet34
  • resnet34d
  • resnet50
  • resnet50d
  • resnet50q
  • resnet50t
  • resnet51q
  • resnet61q
  • resnetaa101d
  • resnetaa50
  • resnetaa50d
  • resnetrs101
  • resnetrs152
  • resnetrs200
  • resnetrs270
  • resnetrs350
  • resnetrs420
  • resnetrs50
  • resnetv2_101
  • resnetv2_101d
  • resnetv2_152
  • resnetv2_152d
  • resnetv2_50
  • resnetv2_50d
  • resnetv2_50d_evos
  • resnetv2_50d_frn
  • resnetv2_50t
  • resnext101_32x4d
  • resnext101_32x8d
  • resnext101_64x4d
  • resnext26ts
  • resnext50_32x4d
  • resnext50d_32x4d
  • rexnet_100
  • rexnet_130
  • rexnet_150
  • rexnet_200
  • rexnetr_100
  • rexnetr_130
  • rexnetr_150
  • rexnetr_200
  • sebotnet33ts_256
  • sebotnet33ts_256
  • sedarknet21
  • selecsls42
  • selecsls42b
  • selecsls60
  • selecsls60b
  • selecsls84
  • semnasnet_050
  • semnasnet_075
  • semnasnet_100
  • semnasnet_140
  • semobilevit_s
  • senet154
  • sequencer2d_l
  • sequencer2d_m
  • sequencer2d_s
  • seresnet101
  • seresnet152
  • seresnet152d
  • seresnet18
  • seresnet200d
  • seresnet269d
  • seresnet33ts
  • seresnet34
  • seresnet50
  • seresnet50t
  • seresnetaa50d
  • seresnext101_32x4d
  • seresnext101_32x8d
  • seresnext101d_32x8d
  • seresnext26d_32x4d
  • seresnext26t_32x4d
  • seresnext26tn_32x4d
  • seresnext26ts
  • seresnext50_32x4d
  • seresnextaa101d_32x8d
  • spnasnet_100
  • ssl_resnet18
  • ssl_resnet50
  • ssl_resnext101_32x16d
  • ssl_resnext101_32x4d
  • ssl_resnext101_32x8d
  • ssl_resnext50_32x4d
  • swsl_resnet18
  • swsl_resnet50
  • swsl_resnext101_32x16d
  • swsl_resnext101_32x4d
  • swsl_resnext101_32x8d
  • swsl_resnext50_32x4d
  • tf_efficientnet_b0
  • tf_efficientnet_b0_ap
  • tf_efficientnet_b0_ns
  • tf_efficientnet_b1
  • tf_efficientnet_b1_ap
  • tf_efficientnet_b1_ns
  • tf_efficientnet_b2
  • tf_efficientnet_b2_ap
  • tf_efficientnet_b2_ns
  • tf_efficientnet_b3
  • tf_efficientnet_b3_ap
  • tf_efficientnet_b3_ns
  • tf_efficientnet_b4
  • tf_efficientnet_b4_ap
  • tf_efficientnet_b4_ns
  • tf_efficientnet_b5
  • tf_efficientnet_b5_ap
  • tf_efficientnet_b5_ns
  • tf_efficientnet_b6
  • tf_efficientnet_b6_ap
  • tf_efficientnet_b6_ns
  • tf_efficientnet_b7
  • tf_efficientnet_b7_ap
  • tf_efficientnet_b7_ns
  • tf_efficientnet_b8
  • tf_efficientnet_b8_ap
  • tf_efficientnet_cc_b0_4e
  • tf_efficientnet_cc_b0_8e
  • tf_efficientnet_cc_b1_8e
  • tf_efficientnet_el
  • tf_efficientnet_em
  • tf_efficientnet_es
  • tf_efficientnet_l2_ns
  • tf_efficientnet_l2_ns_475
  • tf_efficientnet_lite0
  • tf_efficientnet_lite1
  • tf_efficientnet_lite2
  • tf_efficientnet_lite3
  • tf_efficientnet_lite4
  • tf_efficientnetv2_b0
  • tf_efficientnetv2_b1
  • tf_efficientnetv2_b2
  • tf_efficientnetv2_b3
  • tf_efficientnetv2_m
  • tf_efficientnetv2_m_in21ft1k
  • tf_efficientnetv2_s
  • tf_efficientnetv2_s_in21ft1k
  • tf_efficientnetv2_s_in21k
  • tf_inception_v3
  • tf_mixnet_l
  • tf_mixnet_m
  • tf_mixnet_s
  • tf_mobilenetv3_large_075
  • tf_mobilenetv3_large_100
  • tf_mobilenetv3_large_minimal_100
  • tf_mobilenetv3_small_075
  • tf_mobilenetv3_small_100
  • tf_mobilenetv3_small_minimal_100
  • tinynet_a
  • tinynet_b
  • tinynet_c
  • tinynet_d
  • tinynet_e
  • tresnet_l
  • tresnet_l_448
  • tresnet_m
  • tresnet_m_448
  • tresnet_m_miil_in21k
  • tresnet_v2_l
  • tresnet_xl
  • tresnet_xl_448
  • tv_densenet121
  • tv_resnet101
  • tv_resnet152
  • tv_resnet34
  • tv_resnet50
  • tv_resnext50_32x4d
  • twins_pcpvt_base
  • twins_pcpvt_large
  • twins_pcpvt_small
  • twins_svt_base
  • twins_svt_large
  • twins_svt_small
  • vgg11
  • vgg11_bn
  • vgg13
  • vgg13_bn
  • vgg16
  • vgg16_bn
  • vgg19
  • vgg19_bn
  • vit_base_patch16_18x2_224
  • vit_base_patch16_224
  • vit_base_patch16_224_dino
  • vit_base_patch16_224_in21k
  • vit_base_patch16_224_miil
  • vit_base_patch16_224_miil_in21k
  • vit_base_patch16_224_sam
  • vit_base_patch16_384
  • vit_base_patch16_plus_240
  • vit_base_patch16_rpn_224
  • vit_base_patch32_224
  • vit_base_patch32_224_clip_laion2b
  • vit_base_patch32_224_in21k
  • vit_base_patch32_224_sam
  • vit_base_patch32_384
  • vit_base_patch32_plus_256
  • vit_base_patch8_224
  • vit_base_patch8_224_dino
  • vit_base_patch8_224_in21k
  • vit_base_resnet26d_224
  • vit_base_resnet50d_224
  • vit_giant_patch14_224
  • vit_giant_patch14_224_clip_laion2b
  • vit_gigantic_patch14_224
  • vit_huge_patch14_224
  • vit_huge_patch14_224_clip_laion2b
  • vit_huge_patch14_224_in21k
  • vit_large_patch14_224
  • vit_large_patch14_224_clip_laion2b
  • vit_large_patch16_224
  • vit_large_patch16_224_in21k
  • vit_large_patch16_384
  • vit_large_patch32_224
  • vit_large_patch32_224_in21k
  • vit_large_patch32_384
  • vit_relpos_base_patch16_224
  • vit_relpos_base_patch16_cls_224
  • vit_relpos_base_patch16_clsgap_224
  • vit_relpos_base_patch16_plus_240
  • vit_relpos_base_patch16_rpn_224
  • vit_relpos_base_patch32_plus_rpn_256
  • vit_relpos_medium_patch16_224
  • vit_relpos_medium_patch16_cls_224
  • vit_relpos_medium_patch16_rpn_224
  • vit_relpos_small_patch16_224
  • vit_relpos_small_patch16_rpn_224
  • vit_small_patch16_18x2_224
  • vit_small_patch16_224
  • vit_small_patch16_224_dino
  • vit_small_patch16_224_in21k
  • vit_small_patch16_36x1_224
  • vit_small_patch16_384
  • vit_small_patch32_224
  • vit_small_patch32_224_in21k
  • vit_small_patch32_384
  • vit_small_patch8_224_dino
  • vit_small_resnet26d_224
  • vit_small_resnet50d_s16_224
  • vit_srelpos_medium_patch16_224
  • vit_srelpos_small_patch16_224
  • vit_tiny_patch16_224
  • vit_tiny_patch16_224_in21k
  • vit_tiny_patch16_384
  • vovnet39a
  • vovnet57a
  • wide_resnet101_2
  • wide_resnet50_2
  • xception41
  • xception41p
  • xception65
  • xception65p
  • xception71
  • xception