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
Содержание
- Downloading pretrained models with torchvision gives HTTP Error 403 #1876
- Comments
- Downloading: «https://download.pytorch.org/models/vgg19-dcbb9e9d.pth» to /root/.cache/torch/checkpoints/vgg19-dcbb9e9d.pth
- Downloading: «https://download.pytorch.org/models/vgg19-dcbb9e9d.pth» to /root/.cache/torch/checkpoints/vgg19-dcbb9e9d.pth
- Downloading: «https://download.pytorch.org/models/resnet18-5c106cde.pth» to C:Usersbdtho/.cachetorchhubcheckpointsresnet18-5c106cde.pth
- Unable to download model using torch.hub.load(). #33233
- Comments
- To Reproduce
- Expected behavior
- Environment
- Additional context
- HTTPError: HTTP Error 403: rate limit exceeded about hub HOT 1 OPEN
- Comments (1)
- Related Issues (20)
- Recommend Projects
- React
- Vue.js
- Typescript
- TensorFlow
- Django
- Laravel
- Recommend Topics
- javascript
- server
- Machine learning
- Visualization
- Recommend Org
- 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
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
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
-
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
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.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
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
.
-
github ( string ) — строка формата «владелец_репозитория/имя_репозитория[:имя_тега]» с необязательным тегом/ветвью. Ветвью по умолчанию является
- 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
.
-
github ( строка ) — строка формата <владелец_репо/имя_репо[:имя_тега]> с необязательным тегом/веткой. Ветвью по умолчанию является
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
.
-
repo_or_dir ( string ) — имя репо (
- 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