Pytorch: Permintaan Fitur: load_state_dict harus menggunakan nama file

Dibuat pada 31 Mei 2017  ·  3Komentar  ·  Sumber: pytorch/pytorch

Dalam situasi tekanan memori tinggi, berikut ini adalah kejadian umum:

  1. membuat model
  2. baca state_dict dari file pos pemeriksaan (dimuat di GPU)
  3. model.load_state_dict(s)

Karena tekanan memori, solusi umum adalah pertama-tama lakukan:

s = torch.load('my_file.pt', map_location=lambda storage, loc: storage)

Dan kemudian muat s ke model .

Ini adalah skenario yang sangat umum yang harus dapat kita hindari, dan skenario ini mungkin memiliki beberapa jebakan: apa yang terjadi pada model sebagian-GPU sebagian-CPU, apa yang terjadi pada model multi-GPU...

jika load_state_dict mengambil nama file secara langsung, itu dapat menghapus penyimpanan parameter yang ada dan mengaturnya ke yang baru dengan cepat, sehingga tidak memerlukan memori tambahan.

feature nn triaged

Komentar yang paling membantu

Jika load_state_dict mengambil nama file, kita juga harus mengizinkan parameter map_location juga. Situasi umum bagi saya adalah menyimpan pos pemeriksaan di mesin cluster dan kemudian memuatnya di macbook saya (jadi perlu memuat params ke CPU)

Semua 3 komentar

hal yang sama berlaku untuk pengoptimal state_dicts. untuk beberapa pengoptimal seperti Adagrad, pos pemeriksaannya besar, dan kita dapat memiliki situasi tekanan memori yang sama. pengoptimal bahkan tidak memiliki .cuda() , jadi pertama-tama kita harus memuat state_dict ke CPU secara manual, lalu menyalin bagian-bagian ke GPU secara manual.

Saya mengalami ini saat membantu @aszlam hari ini.

Jika load_state_dict mengambil nama file, kita juga harus mengizinkan parameter map_location juga. Situasi umum bagi saya adalah menyimpan pos pemeriksaan di mesin cluster dan kemudian memuatnya di macbook saya (jadi perlu memuat params ke CPU)

Saya dan @szagoruyko adalah penggemar format HDF5 untuk model serial, mungkin jika bisa cocok dengan proposal ini

Apakah halaman ini membantu?
0 / 5 - 0 peringkat