Torch hub load error

Issue I'm trying to run some code using Torch (and Roberta language model) on an EC2 insta...

Issue

I’m trying to run some code using Torch (and Roberta language model) on an EC2 instance on AWS.
The compilation seems to fail, does anyone have a pointer to fix?

Confirm that Torch is correctly installed

import torch
a = torch.rand(5,3)
print (a)

Return this: tensor([[0.7494, 0.5213, 0.8622],…

Attempt to load Roberta

roberta = torch.hub.load('pytorch/fairseq', 'roberta.large.mnli')
Using cache found in /home/ubuntu/.cache/torch/hub/pytorch_fairseq_master
/home/ubuntu/.local/lib/python3.8/site-packages/torch/cuda/__init__.py:52: UserWarning: CUDA initialization: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx (Triggered internally at  /pytorch/c10/cuda/CUDAFunctions.cpp:100.)
  return torch._C._cuda_getDeviceCount() > 0
fatal: not a git repository (or any of the parent directories): .git
running build_ext
/home/ubuntu/.local/lib/python3.8/site-packages/torch/utils/cpp_extension.py:352: UserWarning: Attempted to use ninja as the BuildExtension backend but we could not find ninja.. Falling back to using the slow distutils backend.
  warnings.warn(msg.format('we could not find ninja.'))
skipping 'fairseq/data/data_utils_fast.cpp' Cython extension (up-to-date)
skipping 'fairseq/data/token_block_utils_fast.cpp' Cython extension (up-to-date)
building 'fairseq.libnat' extension
x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/ubuntu/.local/lib/python3.8/site-packages/torch/include -I/home/ubuntu/.local/lib/python3.8/site-packages/torch/include/torch/csrc/api/include -I/home/ubuntu/.local/lib/python3.8/site-packages/torch/include/TH -I/home/ubuntu/.local/lib/python3.8/site-packages/torch/include/THC -I/usr/include/python3.8 -c fairseq/clib/libnat/edit_dist.cpp -o build/temp.linux-x86_64-3.8/fairseq/clib/libnat/edit_dist.o -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE="_gcc" -DPYBIND11_STDLIB="_libstdcpp" -DPYBIND11_BUILD_ABI="_cxxabi1011" -DTORCH_EXTENSION_NAME=libnat -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14
In file included from /home/ubuntu/.local/lib/python3.8/site-packages/torch/include/ATen/Parallel.h:149,
                 from /home/ubuntu/.local/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/utils.h:3,
                 from /home/ubuntu/.local/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/nn/cloneable.h:5,
                 from /home/ubuntu/.local/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/nn.h:3,
                 from /home/ubuntu/.local/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/all.h:12,
                 from /home/ubuntu/.local/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/torch.h:3,
                 from fairseq/clib/libnat/edit_dist.cpp:9:
/home/ubuntu/.local/lib/python3.8/site-packages/torch/include/ATen/ParallelOpenMP.h:84: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
   84 | #pragma omp parallel for if ((end - begin) >= grain_size)

It then ends, after a long while.

x86_64-linux-gnu-gcc: fatal error: Killed signal terminated program cc1plus compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

Solution

Got it to work by loading the pretrained model locally instead of from the hub.

from fairseq.models.roberta import RobertaModel
roberta = RobertaModel.from_pretrained('roberta.large.mnli', 'model.pt', '/home/ubuntu/deployedapp/roberta.large')
roberta.eval()

Note that I had to go for a XLarge EC2 instance to run this, otherwise process would be killed due to low memory.

Answered By — Ahmet

Содержание

  1. Downloading pretrained models with torchvision gives HTTP Error 403 #1876
  2. Comments
  3. Downloading: «https://download.pytorch.org/models/vgg19-dcbb9e9d.pth» to /root/.cache/torch/checkpoints/vgg19-dcbb9e9d.pth
  4. Downloading: «https://download.pytorch.org/models/vgg19-dcbb9e9d.pth» to /root/.cache/torch/checkpoints/vgg19-dcbb9e9d.pth
  5. Downloading: «https://download.pytorch.org/models/resnet18-5c106cde.pth» to C:Usersbdtho/.cachetorchhubcheckpointsresnet18-5c106cde.pth
  6. Unable to download model using torch.hub.load(). #33233
  7. Comments
  8. To Reproduce
  9. Expected behavior
  10. Environment
  11. Additional context
  12. HTTPError: HTTP Error 403: rate limit exceeded about hub HOT 1 OPEN
  13. Comments (1)
  14. Related Issues (20)
  15. Recommend Projects
  16. React
  17. Vue.js
  18. Typescript
  19. TensorFlow
  20. Django
  21. Laravel
  22. Recommend Topics
  23. javascript
  24. server
  25. Machine learning
  26. Visualization
  27. Recommend Org
  28. Facebook
  29. Microsoft

Downloading pretrained models with torchvision gives HTTP Error 403 #1876

I’m getting a 403 error when I try to download pre-trained weights with torchvision 0.5.

torchvision.models.mobilenet_v2(pretrained=True) results in HTTPError: HTTP Error 403: Forbidden . I’ve tried multiple models on multiple machines on multiple networks, always get a 403 error.

I can download the model directly from the URL with wget . But for some reason downloading it through torchvision doesn’t work. I can progress since I can download the weights, but it’s unfortunate I have to load them in manually.

The text was updated successfully, but these errors were encountered:

I can confirm. This issue started happening this afternoon. I don’t think it has anything to do with the library but rather with where the models are hosted.

Also having this is issue, when trying to download a pretrained vgg model. I am using Google colab.

Downloading: «https://download.pytorch.org/models/vgg19-dcbb9e9d.pth» to /root/.cache/torch/checkpoints/vgg19-dcbb9e9d.pth

HTTPError Traceback (most recent call last)
in ()

/usr/lib/python3.6/urllib/request.py in http_error_default(self, req, fp, code, msg, hdrs)
648 class HTTPDefaultErrorHandler(BaseHandler):
649 def http_error_default(self, req, fp, code, msg, hdrs):
—> 650 raise HTTPError(req.full_url, code, msg, hdrs, fp)
651
652 class HTTPRedirectHandler(BaseHandler):

HTTPError: HTTP Error 403: Forbidden

Having the same issue here when trying to download pretrained vgg16 model

Same here on macOS. curl works for me though. Any ideas?

same here
I am trying to use VGG19
File «vgg19.py», line 54, in _step1_load_model self.model = models.vgg19(pretrained=True) File «/opt/anaconda3/lib/python3.7/site-packages/torchvision/models/vgg.py», line 172, in vgg19 return _vgg(‘vgg19’, ‘E’, False, pretrained, progress, **kwargs) File «/opt/anaconda3/lib/python3.7/site-packages/torchvision/models/vgg.py», line 93, in _vgg progress=progress) File «/opt/anaconda3/lib/python3.7/site-packages/torch/hub.py», line 492, in load_state_dict_from_url download_url_to_file(url, cached_file, hash_prefix, progress=progress) File «/opt/anaconda3/lib/python3.7/site-packages/torch/hub.py», line 391, in download_url_to_file u = urlopen(url) File «/opt/anaconda3/lib/python3.7/urllib/request.py», line 222, in urlopen return opener.open(url, data, timeout) File «/opt/anaconda3/lib/python3.7/urllib/request.py», line 531, in open response = meth(req, response) File «/opt/anaconda3/lib/python3.7/urllib/request.py», line 641, in http_response ‘http’, request, response, code, msg, hdrs) File «/opt/anaconda3/lib/python3.7/urllib/request.py», line 569, in error return self._call_chain(*args) File «/opt/anaconda3/lib/python3.7/urllib/request.py», line 503, in _call_chain result = func(*args) File «/opt/anaconda3/lib/python3.7/urllib/request.py», line 649, in http_error_default raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 403: Forbidden

Also happens in torch hub.

+1 .. I see the same issue with 0.4.2

Lines 11 to 21 in 0156d58

model_urls = <
‘resnet18’ : ‘https://download.pytorch.org/models/resnet18-5c106cde.pth’ ,
‘resnet34’ : ‘https://download.pytorch.org/models/resnet34-333f7ec4.pth’ ,
‘resnet50’ : ‘https://download.pytorch.org/models/resnet50-19c8e357.pth’ ,
‘resnet101’ : ‘https://download.pytorch.org/models/resnet101-5d3b4d8f.pth’ ,
‘resnet152’ : ‘https://download.pytorch.org/models/resnet152-b121ed2d.pth’ ,
‘resnext50_32x4d’ : ‘https://download.pytorch.org/models/resnext50_32x4d-7cdf4587.pth’ ,
‘resnext101_32x8d’ : ‘https://download.pytorch.org/models/resnext101_32x8d-8ba56ff5.pth’ ,
‘wide_resnet50_2’ : ‘https://download.pytorch.org/models/wide_resnet50_2-95faca4d.pth’ ,
‘wide_resnet101_2’ : ‘https://download.pytorch.org/models/wide_resnet101_2-32ee1156.pth’ ,
>

For me, this only fails on the CI server (GitHub actions); locally the download works
EDIT: it works from some machines and fails on others (using Python / torchvision).
(wget always works)

Looks like it started working again.

Working again for me as well now.

It is working now.

And now it’s failing with URLError: (again multiple locations, Python 3.6.9)

It’s started failing again now:

Downloading: «https://download.pytorch.org/models/vgg19-dcbb9e9d.pth» to /root/.cache/torch/checkpoints/vgg19-dcbb9e9d.pth

SSLError Traceback (most recent call last)
/usr/lib/python3.6/urllib/request.py in do_open(self, http_class, req, **http_conn_args)
1317 h.request(req.get_method(), req.selector, req.data, headers,
-> 1318 encode_chunked=req.has_header(‘Transfer-encoding’))
1319 except OSError as err: # timeout error

20 frames
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)

During handling of the above exception, another exception occurred:

URLError Traceback (most recent call last)
/usr/lib/python3.6/urllib/request.py in do_open(self, http_class, req, **http_conn_args)
1318 encode_chunked=req.has_header(‘Transfer-encoding’))
1319 except OSError as err: # timeout error
-> 1320 raise URLError(err)
1321 r = h.getresponse()
1322 except:

If you try to open the link for some model (eg. for resenet18 https://download.pytorch.org/models/resnet18-5c106cde.pth) in the browser, you will see an error with «https certificate expired» .

Please fix this .

As a temporary workaround, you can use http:// instead of https:// to download the model.
EDIT: should be fixed now. Can you confirm it works fine now?

As a temporary workaround, you can use http:// instead of https:// to download the model.
EDIT: should be fixed now. Can you confirm it works fine now?

The SSL Certificate issue is fixed now. The Cert was expired for

4 hours, and we root-caused the auto-renewal problem, it wont happen again.

I’m getting something similar when trying to download torchvision.models.segmentation.deeplabv3_resnet50() :

@savourylie is this still an issue?

adding hub/ in the path after /.cache/torch/ worked for me

Still doesn’t work for me

Reopening as its reported again.

Downloading: «https://download.pytorch.org/models/resnet18-5c106cde.pth» to C:Usersbdtho/.cachetorchhubcheckpointsresnet18-5c106cde.pth

SSLCertVerificationError Traceback (most recent call last)

.condaenvstensorflow_gliburllibrequest.py in do_open(self, http_class, req, **http_conn_args)
1349 try:
-> 1350 h.request(req.get_method(), req.selector, req.data, headers,
1351 encode_chunked=req.has_header(‘Transfer-encoding’))

.condaenvstensorflow_glibhttpclient.py in request(self, method, url, body, headers, encode_chunked)
1254 «»»Send a complete request to the server.»»»
-> 1255 self._send_request(method, url, body, headers, encode_chunked)
1256

.condaenvstensorflow_glibhttpclient.py in _send_request(self, method, url, body, headers, encode_chunked)
1300 body = _encode(body, ‘body’)
-> 1301 self.endheaders(body, encode_chunked=encode_chunked)
1302

.condaenvstensorflow_glibhttpclient.py in endheaders(self, message_body, encode_chunked)
1249 raise CannotSendHeader()
-> 1250 self._send_output(message_body, encode_chunked=encode_chunked)
1251

.condaenvstensorflow_glibhttpclient.py in _send_output(self, message_body, encode_chunked)
1009 del self._buffer[:]
-> 1010 self.send(msg)
1011

.condaenvstensorflow_glibhttpclient.py in send(self, data)
949 if self.auto_open:
—> 950 self.connect()
951 else:

.condaenvstensorflow_glibhttpclient.py in connect(self)
1423
-> 1424 self.sock = self._context.wrap_socket(self.sock,
1425 server_hostname=server_hostname)

.condaenvstensorflow_glibssl.py in wrap_socket(self, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, session)
499 # ctx._wrap_socket()
—> 500 return self.sslsocket_class._create(
501 sock=sock,

.condaenvstensorflow_glibssl.py in _create(cls, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, context, session)
1039 raise ValueError(«do_handshake_on_connect should not be specified for non-blocking sockets»)
-> 1040 self.do_handshake()
1041 except (OSError, ValueError):

.condaenvstensorflow_glibssl.py in do_handshake(self, block)
1308 self.settimeout(None)
-> 1309 self._sslobj.do_handshake()
1310 finally:

SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get issuer certificate (_ssl.c:1123)

During handling of the above exception, another exception occurred:

Источник

Unable to download model using torch.hub.load(). #33233

At the moment, attempts to download (at least some) models with torch.hub.load()
result in 403 errors.

To Reproduce

Steps to reproduce the behavior:

This produces the following error:

NOTE: a copy of the model must not be present in the cache in order for the code snippet above to result in this error.

Expected behavior

Download to complete without an error.

Environment

Additional context

The text was updated successfully, but these errors were encountered:

Could you rerun the code now?
We had some server issues as explained here, which should be resolved now.

I just verified that I’m able to download checkpoints from torch hub again.

The issue should be resolved. Feel free to reopen the issue.

I am running windows 10, installed pytorch 1.4.0, torchvision 0.5.0

When I run the following codes,
import torch
model = torch.hub.load(‘pytorch/vision’, ‘resnet18’, pretrained=True)

I got the error message of «Exception has occurred: URLError, «

In fact, I want to load the following model, and I got the same error message,
model = torch.hub.load(‘rwightman/pytorch-pretrained-gluonresnet’, ‘gluon_resnet34_v1b’, pretrained=True)

I wonder if anybody know how to make «torch.hub.load» work in Windows 10.

works on my Windows10 system with torch==1.8.0.dev20201116 , so you might need to update PyTorch to the latest stable release or a nightly build.

torch.hub.load() command is not working for me.

Syntax used:
torch.hub.load(‘pytorch/vision’, ‘resnet18’, pretrained = True)

Error:
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: rate limit exceeded

Environment: Windows 10, python 3.7 , torchvision-0.10.0+cu102

Any help to quickly resolve this issue would be appreciated. Thanks!

torch.hub.list(‘pytorch/vision’,force_reload=True)
urllib.error.HTTPError: HTTP Error 403: rate limit exceeded

Resolved the issue by downgrading the torch to version 1.8.1
$python -m pip uninstall torch
$python -m pip install torch==1.8.1

This is not resolved and I still experience this bug. Even official COLAB tutorials are bugged.
https://colab.research.google.com/github/pytorch/pytorch.github.io/blob/master/assets/hub/pytorch_vision_deeplabv3_resnet101.ipynb#scrollTo=2zgiOo4JphT5
The only fix is to use torchvision.models alternatively.

Not able to load the model from torch hub. Any fix for that required.
torch 1.8.0a0+52ea372

Got the same issue as @vermavinay982 above. torch 1.9.0 python 3.8.10. Wondering if it’s something I’m doing or if we have server issues. Thanks.

Traceback (most recent call last): File «pyv.py», line 27, in model = torch.hub.load(«facebookresearch/pytorchvideo», model=model_name, pretrained=True) File «/usr/lib/python3/dist-packages/torch/hub.py», line 362, in load repo_or_dir = _get_cache_or_reload(repo_or_dir, force_reload, verbose) File «/usr/lib/python3/dist-packages/torch/hub.py», line 169, in _get_cache_or_reload download_url_to_file(url, cached_file, progress=False) File «/usr/lib/python3/dist-packages/torch/hub.py», line 419, in download_url_to_file u = urlopen(req) File «/usr/lib/python3.8/urllib/request.py», line 222, in urlopen return opener.open(url, data, timeout) File «/usr/lib/python3.8/urllib/request.py», line 531, in open response = meth(req, response) File «/usr/lib/python3.8/urllib/request.py», line 640, in http_response response = self.parent.error( File «/usr/lib/python3.8/urllib/request.py», line 563, in error result = self._call_chain(*args) File «/usr/lib/python3.8/urllib/request.py», line 502, in _call_chain result = func(*args) File «/usr/lib/python3.8/urllib/request.py», line 755, in http_error_302 return self.parent.open(new, timeout=req.timeout) File «/usr/lib/python3.8/urllib/request.py», line 531, in open response = meth(req, response) File «/usr/lib/python3.8/urllib/request.py», line 640, in http_response response = self.parent.error( File «/usr/lib/python3.8/urllib/request.py», line 569, in error return self._call_chain(*args) File «/usr/lib/python3.8/urllib/request.py», line 502, in _call_chain result = func(*args) File «/usr/lib/python3.8/urllib/request.py», line 649, in http_error_default raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 404: Not Found

@herculesdynamics what model are you trying to download?
I have fixed my issue, hope it helps you too. I went to this /opt/conda/lib/python3.8/site-packages/torch/hub.py . Opened in nano. Changed MASTER_BRANCH to ‘main’ — saved the code — went again and my models were loading perfectly.
Its just a branch name conflict as the master is changed to main — but in code branch was master so Models cant be loaded.

To find your hub.py you can do the following.
Open terminal, open python

This is the location of hub file, just do nano /opt/conda/lib/python3.8/site-packages/torch/hub.py and change.

@ptrblck Can you confirm this? I was using 1.8.1, and upgraded to 1.9.1 too, both having master branch as default. I have checked the current code in master branch of torch the error is fixed, It will check for main first then master

Источник

HTTPError: HTTP Error 403: rate limit exceeded about hub HOT 1 OPEN

Thanks for the report, pytorch/pytorch#61761 should provide a fix

  • Error when submitting PR HOT 1
  • 404 for pre-trained ResNeXt models HOT 1
  • How to use hub if don’t have network? HOT 2
  • Issue in Segment ID list for BERT example in documentation HOT 1
  • libtorch_hip.so: cannot open shared object file: No such file or directory silero model error on heroku HOT 1
  • ModuleNotFoundError: No module named ‘bitarray’
  • cannot unpack non-iterable NoneType object HOT 2
  • Add FCOS HOT 3
  • Silero models are failing HOT 2
  • Fix all `.md` files to set «trust_repo=True» HOT 1
  • Netlify broken again
  • Update all torchvision calls to use `weights=` instead of `pretrained=True`
  • silero usage of `torch.stft` HOT 5
  • Update all torchvision version to 0.13
  • TODO Before (or right after) release
  • Issue loading a model from torch.hub HOT 3
  • Model from URl HOT 1
  • CI doesn’t run CircleCI jobs
  • RuntimeError: Unknown builtin op: aten::reflection_pad3d while using silero models HOT 1
  • Change the patch size

Recommend Projects

React

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

Vue.js

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

Typescript

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

TensorFlow

An Open Source Machine Learning Framework for Everyone

Django

The Web framework for perfectionists with deadlines.

Laravel

A PHP framework for web artisans

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

Recommend Topics

javascript

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

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.

Visualization

Some thing interesting about visualization, use data art

Some thing interesting about game, make everyone happy.

Recommend Org

Facebook

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

Microsoft

Open source projects and samples from Microsoft.

Источник

#python #python-3.x #pytorch #fairseq #torchhub

Вопрос:

У меня был этот простой фрагмент кода, найденный в репозитории GitHub fairseq, который в основном загружает bart.base модель PyTorch из torch.hub :

 bart = torch.hub.load('pytorch/fairseq', 'bart.base')
 

Этот код отлично работал около двух недель назад, теперь он выдает следующую ошибку, несмотря на то, что я ничего не изменил:

 HTTPError                                 Traceback (most recent call last)
<ipython-input-7-68181b5f094c> in <module>()
      1 # torch.cuda.empty_cache()
----> 2 bart = torch.hub.load('pytorch/fairseq', 'bart.base') #takes around two minutes
      3 # bart.cuda()  # use GPU
...
...
/usr/lib/python3.7/urllib/request.py in http_error_default(self, req, fp, code, msg, hdrs)
    647 class HTTPDefaultErrorHandler(BaseHandler):
    648     def http_error_default(self, req, fp, code, msg, hdrs):
--> 649         raise HTTPError(req.full_url, code, msg, hdrs, fp)
    650 
    651 class HTTPRedirectHandler(BaseHandler):

HTTPError: HTTP Error 404: Not Found
 

Кроме того, я узнал, что это происходит с другими моделями fairseq . Все следующие модели вызывают одну и ту же ошибку:

 >>> torch.hub.load('pytorch/fairseq', 'transformer.wmt16.en-de')
# ERROR!

>>> torch.hub.load('pytorch/fairseq', 'camembert')
# ERROR!
 

Значит, у всех них должно быть что-то общее.

Ответ №1:

По-видимому, fairseq люди решили изменить ветвь по умолчанию своего репозитория GitHub с master на main ровно 7 дней назад. (проверьте эту фиксацию).

Таким образом, добавление main ветки в информацию о репо устранит проблему:

 bart = torch.hub.load('pytorch/fairseq:main', 'bart.base') #<--- added :main
 

И это потому, что в torch.hub.load() функции по умолчанию используется имя филиала master . Так что на самом деле, ты звонил pytorch/fairseq:master , которого больше не существует.

И все другие модели теперь работают:

 torch.hub.load('pytorch/fairseq:main', 'transformer.wmt16.en-de')
# WORKS!

>>> torch.hub.load('pytorch/fairseq:main', 'camembert')
# WORKS!
 

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.

  • Laravel photo

    Laravel

    A PHP framework for web artisans

  • 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.

  • Visualization

    Some thing interesting about visualization, use data art

  • 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.

  • Alibaba photo

    Alibaba

    Alibaba Open Source for everyone

  • D3 photo

    D3

    Data-Driven Documents codes.

  • Tencent photo

    Tencent

    China tencent open source team.

torch.hub

Pytorch Hub-это хранилище предварительно обученных моделей,созданное для облегчения воспроизводимости исследований.

Publishing models

Pytorch Hub поддерживает публикацию предварительно обученных моделей (определений моделей и предварительно обученных весов) в репозиторий github путем добавления простого файла hubconf.py ;

hubconf.py может иметь несколько точек входа. Каждая точка входа определяется как функция Python (пример: предварительно обученная модель, которую вы хотите опубликовать).

def entrypoint_name(*args, **kwargs):
    
    ...

Как реализовать точку входа?

Вот фрагмент кода, указывающий точку входа для модели resnet18 , если мы расширим реализацию в pytorch/vision/hubconf.py . В большинстве случаев достаточно импортировать нужную функцию в hubconf.py . Здесь мы просто хотим использовать расширенную версию в качестве примера, чтобы показать, как она работает. Вы можете увидеть полный сценарий в репозитории pytorch / vision

dependencies = ['torch']
from torchvision.models.resnet import resnet18 as _resnet18


def resnet18(pretrained=False, **kwargs):
    """ # This docstring shows up in hub.help()
    Resnet18 model
    pretrained (bool): kwargs, load pretrained weights into the model
    """
    
    model = _resnet18(pretrained=pretrained, **kwargs)
    return model
  • dependencies Переменная dependencies — это список имен пакетов, необходимых для загрузки модели. Обратите внимание, что это может немного отличаться от зависимостей, необходимых для обучения модели.
  • args и kwargs передаются реальной вызываемой функции.
  • Docstring функции работает как справочное сообщение.Она объясняет,что делает модель и каковы допустимые позиционные/ключевые аргументы.Настоятельно рекомендуется добавить сюда несколько примеров.
  • Функция точки входа может либо возвращать модель(nn.module),либо вспомогательные инструменты,чтобы сделать рабочий процесс пользователя более плавным,например,токенизаторы.
  • Вызываемые объекты с префиксом подчеркивания считаются вспомогательными функциями, которые не отображаются в torch.hub.list() .
  • Предварительно обученные веса могут храниться локально в репозитории github или загружаться с помощью torch.hub.load_state_dict_from_url() . Если меньше 2 ГБ, рекомендуется прикрепить его к релизу проекта и использовать URL-адрес из релиза. В приведенном выше примере torchvision.models.resnet.resnet18 обрабатывает pretrained , в качестве альтернативы вы можете поместить следующую логику в определение точки входа.
if pretrained:
    
    dirname = os.path.dirname(__file__)
    checkpoint = os.path.join(dirname, <RELATIVE_PATH_TO_CHECKPOINT>)
    state_dict = torch.load(checkpoint)
    model.load_state_dict(state_dict)

    
    checkpoint = 'https://download.pytorch.org/models/resnet18-5c106cde.pth'
    model.load_state_dict(torch.hub.load_state_dict_from_url(checkpoint, progress=False))

Important Notice

  • Опубликованные модели должны быть как минимум в ветке/теге.Это не может быть случайный коммит.

Загрузка моделей из концентратора

Pytorch Hub предоставляет удобные API-интерфейсы для изучения всех доступных моделей в хабе с помощью torch.hub.list() , отображения строки документации и примеров с помощью torch.hub.help() и загрузки предварительно обученных моделей с помощью torch.hub.load() .

torch.hub.list(github, force_reload=False)[source]

Список всех точек входа, доступных в github hubconf.

Parameters
  • github ( string ) — строка формата «владелец_репозитория/имя_репозитория[:имя_тега]» с необязательным тегом/ветвью. Ветвью по умолчанию является master , если она не указана. Пример: ‘pytorch/vision[:hub]’
  • force_reload ( bool , необязательный ) — следует ли отказаться от существующего кеша и принудительно выполнить новую загрузку. По умолчанию — False .
Returns

список доступных имен точек входа

Return type

entrypoints

Example

>>> entrypoints = torch.hub.list('pytorch/vision', force_reload=True)
torch.hub.help(github, model, force_reload=False) [источник]

Показать строку документации model входа .

Parameters
  • github ( строка ) — строка формата <владелец_репо/имя_репо[:имя_тега]> с необязательным тегом/веткой. Ветвью по умолчанию является master , если она не указана. Пример: ‘pytorch/vision[:hub]’
  • model ( string ) — строка имени точки входа, определенная в hubconf.py репозитория.
  • force_reload ( bool , необязательный ) — следует ли отказаться от существующего кеша и принудительно выполнить новую загрузку. По умолчанию — False .

Example

>>> print(torch.hub.help('pytorch/vision', 'resnet18', force_reload=True))
torch.hub.load(repo_or_dir, model, *args, **kwargs) [источник]

Загрузите модель из репозитория github или локальной директории.

Примечание:Загрузка модели является типичным случаем использования,но это также может быть использовано для загрузки других объектов,таких как токенизаторы,функции потерь и т.д.

Если source является 'github' , ожидается , что repo_or_dir будет иметь форму repo_owner/repo_name[:tag_name] с необязательным тегом / веткой.

Если source является 'local' , repo_or_dir , как ожидается , будет путь к локальной директории.

Parameters
  • repo_or_dir ( string ) — имя репо ( repo_owner/repo_name[:tag_name] ), если source = 'github' ; или путь к локальному каталогу, если source = 'local' .
  • model ( строка ) — имя вызываемого объекта (точка входа), определенное в hubconf.py /каталога .
  • *args ( необязательный ) — соответствующие аргументы для вызываемой model .
  • источник ( строка , необязательный ) – 'github' | 'local' . Указывает, как следует интерпретировать repo_or_dir .По умолчанию это 'github' .
  • force_reload ( bool , необязательный ) — следует ли безоговорочно форсировать новую загрузку репозитория github. Не имеет никакого эффекта, если source = 'local' . По умолчанию — False .
  • verbose ( bool , необязательный ) — если False , отключать сообщения о попадании в локальные кэши. Обратите внимание, что сообщение о первой загрузке нельзя отключить. Не имеет никакого эффекта, если source = 'local' . Значение по умолчанию — True .
  • **kwargs ( необязательно ) — соответствующие kwargs для вызываемой model .
Returns

Вывод model вызываемой при вызове с заданными *args и **kwargs .

Example

>>> 
>>> repo = 'pytorch/vision'
>>> model = torch.hub.load(repo, 'resnet50', pretrained=True)
>>> 
>>> path = '/some/local/path/pytorch/vision'
>>> model = torch.hub.load(path, 'resnet50', pretrained=True)
torch.hub.download_url_to_file(url, dst, hash_prefix=None, progress=True) [источник]

Загрузить объект по заданному URL в локальный путь.

Parameters
  • url ( string ) – URL объекта для скачивания
  • dst ( строка ) — полный путь, по которому будет сохранен объект, например, /tmp/temporary_file
  • hash_prefix ( строка , необязательный ) — если не None, загруженный файл SHA256 должен начинаться с hash_prefix . По умолчанию: нет
  • progress ( bool , необязательный ) — отображать ли индикатор выполнения в stderr. По умолчанию: True.

Example

>>> torch.hub.download_url_to_file('https://s3.amazonaws.com/pytorch/models/resnet18-5c106cde.pth', '/tmp/temporary_file')
torch.hub.load_state_dict_from_url(url, model_dir=None, map_location=None, progress=True, check_hash=False, file_name=None) [источник]

Загружает сериализованный объект Torch по указанному URL.

Если загруженный файл является zip-файлом,он будет автоматически распакован.

Если объект уже присутствует в model_dir , он десериализуется и возвращается. Значение по умолчанию для model_dir<hub_dir>/checkpoints , где hub_dir — это каталог, возвращаемый get_dir() .

Parameters
  • url ( string ) – URL объекта для скачивания
  • model_dir ( строка , необязательный ) — каталог, в котором будет сохранен объект
  • map_location ( необязательный ) — функция или dict, указывающая, как переназначить места хранения (см. torch.load)
  • progress ( bool , необязательный ) — отображать или нет индикатор выполнения для stderr. По умолчанию: Истина
  • check_hash ( bool , необязательный ) — если True, часть URL-адреса с именем файла должна соответствовать соглашению об именах filename-<sha256>.ext , где <sha256> — это первые восемь или более цифр хэша SHA256 содержимого файла. Хэш используется для обеспечения уникальности имен и проверки содержимого файла. По умолчанию: Ложь
  • имя_файла ( строка , необязательный параметр) – имя загружаемого файла. Имя файла из url будет использоваться, если не задано.

Example

>>> state_dict = torch.hub.load_state_dict_from_url('https://s3.amazonaws.com/pytorch/models/resnet18-5c106cde.pth')

Запуск загруженной модели:

Обратите внимание, что *args и **kwargs в torch.hub.load() используются для создания экземпляра модели. После того, как вы загрузили модель, как вы можете узнать, что вы можете делать с этой моделью? Предлагаемый рабочий процесс

  • dir(model) чтобы увидеть все доступные методы модели.
  • help(model.foo) чтобы проверить, какие аргументы model.foo для запуска model.foo

Чтобы помочь пользователям разобраться в работе,не обращаясь к документации снова и снова,мы настоятельно рекомендуем владельцам репозиториев сделать сообщения помощи по функциям ясными и краткими.Также полезно включать минимальный рабочий пример.

Где сохраняются мои загруженные модели?

Места используются в порядке

  • Calling hub.set_dir(<PATH_TO_HUB_DIR>)
  • $TORCH_HOME/hub , если установлена ​​переменная окружения TORCH_HOME .
  • $XDG_CACHE_HOME/torch/hub , если установлена ​​переменная окружения XDG_CACHE_HOME .
  • ~/.cache/torch/hub
torch.hub.get_dir()[source]

Получите каталог кеша Torch Hub, используемый для хранения загруженных моделей и весов.

Если set_dir() не вызывается, путь по умолчанию — $TORCH_HOME/hub где переменная окружения $TORCH_HOME умолчанию $XDG_CACHE_HOME/torch . $XDG_CACHE_HOME следует спецификации X Design Group макета файловой системы Linux со значением по умолчанию ~/.cache , если переменная среды не установлена.

torch.hub.set_dir(d)[source]

При желании установите каталог Torch Hub, используемый для сохранения загруженных моделей и веса.

Parameters

d ( строка ) – путь к локальной папке для сохранения загруженных моделей и весов.

Caching logic

По умолчанию мы не очищаем файлы после загрузки. Hub использует кеш по умолчанию, если он уже существует в каталоге, возвращаемом get_dir() .

Пользователи могут принудительно перезагрузить, вызвав hub.load(..., force_reload=True) . Это приведет к удалению существующей папки github и загруженных весов, повторной инициализации новой загрузки. Это полезно, когда обновления публикуются в одной и той же ветке, пользователи могут не отставать от последней версии.

Known limitations:

Torch Hub работает, импортируя пакет, как если бы он был установлен. Есть некоторые побочные эффекты, связанные с импортом в Python. Например, вы можете увидеть новые элементы в кэшах Python sys.modules и sys.path_importer_cache , что является нормальным поведением Python.

Известным ограничением, о котором стоит упомянуть, является то, что пользователь НЕ МОЖЕТ загружать две разные ветки одного и того же репо в одном и том же процессе Python . Это похоже на установку двух пакетов с одинаковыми именами в Python, что нехорошо. Кэш может присоединиться к вечеринке и преподнести вам сюрпризы, если вы действительно попробуете это сделать. Конечно, совершенно нормально загружать их в отдельные процессы.


PyTorch

1.8

  • torch.zeros

    Возвращает тензор,заполненный скалярным значением 0,форма которого определяется переменной аргумента size.

  • torch.zeros_like

    Возвращает тензор,заполненный скалярным значением 0,того же размера,что и входные данные.

  • TorchScript

    Встроенные функции и модули Отладочное приложение TorchScript-это способ создания сериализуемых и оптимизируемых моделей из кода PyTorch.

  • Tracer

    Существуют некоторые граничные случаи,когда трассировка данной функции/модуля Python не будет репрезентативной для основного кода.

Пытался сделать программу на Python (в виртуальной среде):
синтез речи через модели Silero для Torch

Вот код:

import torch 
import sounddevice
import time

language = "ru"
model_id = "ru_v3"
sample_rate = 48000
speaker = "baya"
put_accent = True
put_yo = True
device = torch.device("cpu")
text = "Привет"

model, empty = torch.hub.load(repo_or_dir='snakers4/silero-models',
                          model='silero_tts',
                          language=language,
                          speaker=model_id)
model.to(device)

audio = model.apply_tts(text = text,
                        speaker = speaker,
                        sample_rate = sample_rate,
                        put_accent = put_accent,
                        put_yo = put_yo)

print(text)

sounddevice.play(audio, sample_rate)
time.sleep(len(audio) / sample_rate + 0.1)
sounddevice.stop()

Запустив 1-ый раз программу и у меня создался файл:
latest_silero_models.yml
и вылетела ошибка… Я подумал так и должно
Запускаю 2-ой раз файл уже не создается, а читается (как я понял)
и вылезает ошибка (не помню эта та же самая ошибка или нет):

Using cache found in /home/methodius/.cache/torch/hub/snakers4_silero-models_master
Traceback (most recent call last):
  File "Pre-release-0.1/main.py", line 14, in <module>
    model, empty = torch.hub.load(repo_or_dir='snakers4/silero-models',
  File "/home/methodius/Projects/Python/VoiceAssistant/.virtual/lib/python3.8/site-packages/torch/hub.py", line 399, in load
    model = _load_local(repo_or_dir, model, *args, **kwargs)
  File "/home/methodius/Projects/Python/VoiceAssistant/.virtual/lib/python3.8/site-packages/torch/hub.py", line 428, in _load_local
    model = entry(*args, **kwargs)
  File "/home/methodius/.cache/torch/hub/snakers4_silero-models_master/src/silero/silero.py", line 88, in silero_tts
    model = imp.load_pickle("tts_models", "model")
  File "/home/methodius/Projects/Python/VoiceAssistant/.virtual/lib/python3.8/site-packages/torch/package/package_importer.py", line 249, in load_pickle
    result = unpickler.load()
  File "/usr/local/lib/python3.8/pickle.py", line 1212, in load
    dispatch[key[0]](self)
  File "/usr/local/lib/python3.8/pickle.py", line 1253, in load_binpersid
    self.append(self.persistent_load(pid))
  File "/home/methodius/Projects/Python/VoiceAssistant/.virtual/lib/python3.8/site-packages/torch/package/package_importer.py", line 227, in persistent_load
    loaded_reduces[reduce_id] = func(self, *args)
  File "/home/methodius/Projects/Python/VoiceAssistant/.virtual/lib/python3.8/site-packages/torch/jit/_script.py", line 344, in unpackage_script_module
    cpp_module = torch._C._import_ir_module_from_package(
RuntimeError: Unknown qengine

Системные характеристики:
Linux Manjaro Kde 21.2.6
Python 3.8.13
Torch 10.0.0+cpu
Torchaudio 0.10.0

У меня был этот простой фрагмент кода, найденный на Fairseq GitHub репозиторий, который в основном загружает bart.base модель PyTorch из torch.hub:

bart = torch.hub.load('pytorch/fairseq', 'bart.base')

Этот код работал отлично около двух недель назад, теперь он вызывает следующую ошибку, несмотря на то, что я ничего не менял:

HTTPError                                 Traceback (most recent call last)
<ipython-input-7-68181b5f094c> in <module>()
      1 # torch.cuda.empty_cache()
----> 2 bart = torch.hub.load('pytorch/fairseq', 'bart.base') #takes around two minutes
      3 # bart.cuda()  # use GPU
...
...
/usr/lib/python3.7/urllib/request.py in http_error_default(self, req, fp, code, msg, hdrs)
    647 class HTTPDefaultErrorHandler(BaseHandler):
    648     def http_error_default(self, req, fp, code, msg, hdrs):
--> 649         raise HTTPError(req.full_url, code, msg, hdrs, fp)
    650 
    651 class HTTPRedirectHandler(BaseHandler):

HTTPError: HTTP Error 404: Not Found

Также я узнал, что это происходит с другими моделями на fairseq. Все следующие модели вызывают одну и ту же ошибку:

>>> torch.hub.load('pytorch/fairseq', 'transformer.wmt16.en-de')
# ERROR!

>>> torch.hub.load('pytorch/fairseq', 'camembert')
# ERROR!

Так что между ними должно быть что-то общее.

1 ответ

Лучший ответ

Очевидно, люди fairseq решили изменить ветку по умолчанию своего репозитория GitHub с master на main ровно 7 дней назад. (проверьте этот коммит).

Итак, добавление ветки main к информации о репо решит проблему:

bart = torch.hub.load('pytorch/fairseq:main', 'bart.base') #<--- added :main

И это потому, что в функции torch.hub.load() имя ветки по умолчанию — master. На самом деле, вы звонили pytorch/fairseq:master, которого больше не существует.

И все остальные модели сейчас работают:

torch.hub.load('pytorch/fairseq:main', 'transformer.wmt16.en-de')
# WORKS!

>>> torch.hub.load('pytorch/fairseq:main', 'camembert')
# WORKS!


0

Anwarvic
27 Сен 2021 в 18:30

Понравилась статья? Поделить с друзьями:
  • Tor ошибка 502
  • Tor ubuntu ошибка загрузки 404
  • Tor the bookmarks and history system will not be functional как исправить
  • Tor exited during startup this might be due to an error in your torrc file
  • Tor error opening file for writing