9.5 C
Canberra
Thursday, October 23, 2025

Posit AI Weblog: torch 0.11.0



Posit AI Weblog: torch 0.11.0

torch v0.11.0 is now on CRAN! This weblog put up highlights among the modifications included
on this launch. However you possibly can at all times discover the total changelog
on the torch web site.

Improved loading of state dicts

For a very long time it has been doable to make use of torch from R to load state dicts (i.e. 
mannequin weights) educated with PyTorch utilizing the load_state_dict() perform.
Nevertheless, it was frequent to get the error:

Error in cpp_load_state_dict(path) :  isGenericDict() INTERNAL ASSERT FAILED at

This occurred as a result of when saving the state_dict from Python, it wasn’t actually
a dictionary, however an ordered dictionary. Weights in PyTorch are serialized as Pickle information – a Python-specific format just like our RDS. To load them in C++, with out a Python runtime,
LibTorch implements a pickle reader that’s in a position to learn solely a subset of the
file format, and this subset didn’t embrace ordered dicts.

This launch provides help for studying the ordered dictionaries, so that you received’t see
this error any longer.

In addition to that, studying theses information requires half of the height reminiscence utilization, and in
consequence additionally is way quicker. Listed below are the timings for studying a 3B parameter
mannequin (StableLM-3B) with v0.10.0:

system.time({
  x <- torch::load_state_dict("~/Downloads/pytorch_model-00001-of-00002.bin")
  y <- torch::load_state_dict("~/Downloads/pytorch_model-00002-of-00002.bin")
})
   person  system elapsed 
662.300  26.859 713.484 

and with v0.11.0

   person  system elapsed 
  0.022   3.016   4.016 

Which means that we went from minutes to just some seconds.

Utilizing JIT operations

Some of the frequent methods of extending LibTorch/PyTorch is by implementing JIT
operations. This permits builders to put in writing customized, optimized code in C++ and
use it instantly in PyTorch, with full help for JIT tracing and scripting.
See our ‘Torch outdoors the field’
weblog put up if you wish to be taught extra about it.

Utilizing JIT operators in R used to require package deal builders to implement C++/Rcpp
for every operator in the event that they needed to have the ability to name them from R instantly.
This launch added help for calling JIT operators with out requiring authors to
implement the wrappers.

The one seen change is that we now have a brand new image within the torch namespace, referred to as
jit_ops. Let’s load torchvisionlib, a torch extension that registers many various
JIT operations. Simply loading the package deal with library(torchvisionlib) will make
its operators accessible for torch to make use of – it is because the mechanism that registers
the operators acts when the package deal DLL (or shared library) is loaded.

As an example, let’s use the read_file operator that effectively reads a file
right into a uncooked (bytes) torch tensor.

torch_tensor
 137
  80
  78
  71
 ...
   0
   0
 103
... [the output was truncated (use n=-1 to disable)]
[ CPUByteType{325862} ]

We’ve made it so autocomplete works properly, such which you can interactively discover the accessible
operators utilizing jit_ops$ and urgent to set off RStudio’s autocomplete.

Different small enhancements

This launch additionally provides many small enhancements that make torch extra intuitive:

  • Now you can specify the tensor dtype utilizing a string, eg: torch_randn(3, dtype = "float64"). (Beforehand you needed to specify the dtype utilizing a torch perform, comparable to torch_float64()).

    torch_randn(3, dtype = "float64")
    torch_tensor
    -1.0919
     1.3140
     1.3559
    [ CPUDoubleType{3} ]
  • Now you can use with_device() and local_device() to briefly modify the system
    on which tensors are created. Earlier than, you had to make use of system in every tensor
    creation perform name. This permits for initializing a module on a particular system:

    with_device(system="mps", {
      linear <- nn_linear(10, 1)
    })
    linear$weight$system
    torch_device(kind='mps', index=0)
  • It’s now doable to briefly modify the torch seed, which makes creating
    reproducible packages simpler.

    with_torch_manual_seed(seed = 1, {
      torch_randn(1)
    })
    torch_tensor
     0.6614
    [ CPUFloatType{1} ]

Thanks to all contributors to the torch ecosystem. This work wouldn’t be doable with out
all of the useful points opened, PRs you created, and your arduous work.

If you’re new to torch and wish to be taught extra, we extremely suggest the just lately introduced e book ‘Deep Studying and Scientific Computing with R torch’.

If you wish to begin contributing to torch, be at liberty to succeed in out on GitHub and see our contributing information.

The complete changelog for this launch could be discovered right here.

Photograph by Ian Schneider on Unsplash

Reuse

Textual content and figures are licensed underneath Inventive Commons Attribution CC BY 4.0. The figures which have been reused from different sources do not fall underneath this license and could be acknowledged by a be aware of their caption: “Determine from …”.

Quotation

For attribution, please cite this work as

Falbel (2023, June 7). Posit AI Weblog: torch 0.11.0. Retrieved from https://blogs.rstudio.com/tensorflow/posts/2023-06-07-torch-0-11/

BibTeX quotation

@misc{torch-0-11-0,
  creator = {Falbel, Daniel},
  title = {Posit AI Weblog: torch 0.11.0},
  url = {https://blogs.rstudio.com/tensorflow/posts/2023-06-07-torch-0-11/},
  yr = {2023}
}

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

[td_block_social_counter facebook="tagdiv" twitter="tagdivofficial" youtube="tagdiv" style="style8 td-social-boxed td-social-font-icons" tdc_css="eyJhbGwiOnsibWFyZ2luLWJvdHRvbSI6IjM4IiwiZGlzcGxheSI6IiJ9LCJwb3J0cmFpdCI6eyJtYXJnaW4tYm90dG9tIjoiMzAiLCJkaXNwbGF5IjoiIn0sInBvcnRyYWl0X21heF93aWR0aCI6MTAxOCwicG9ydHJhaXRfbWluX3dpZHRoIjo3Njh9" custom_title="Stay Connected" block_template_id="td_block_template_8" f_header_font_family="712" f_header_font_transform="uppercase" f_header_font_weight="500" f_header_font_size="17" border_color="#dd3333"]
- Advertisement -spot_img

Latest Articles