TorchSharp.PyBridge
1.4.3
dotnet add package TorchSharp.PyBridge --version 1.4.3
NuGet\Install-Package TorchSharp.PyBridge -Version 1.4.3
<PackageReference Include="TorchSharp.PyBridge" Version="1.4.3" />
<PackageVersion Include="TorchSharp.PyBridge" Version="1.4.3" />
<PackageReference Include="TorchSharp.PyBridge" />
paket add TorchSharp.PyBridge --version 1.4.3
#r "nuget: TorchSharp.PyBridge, 1.4.3"
#:package TorchSharp.PyBridge@1.4.3
#addin nuget:?package=TorchSharp.PyBridge&version=1.4.3
#tool nuget:?package=TorchSharp.PyBridge&version=1.4.3
TorchSharp.PyBridge
TorchSharp.PyBridge is an extension library for TorchSharp, providing seamless interoperability between .NET and Python for model serialization. It simplifies the process of saving and loading PyTorch models in a .NET environment, enabling developers to easily develop models in both .NET and Python and transfer models easily.
Features
module.load_py(...),optim.load_py(...): Extension method for modules and optimizers for easily loading PyTorch models saved in the standard Python format (usingtorch.save) directly into TorchSharp.This only works for when the
state_dictwas saved and not the whole model, see example below.module.save_py(...),optim.save_py(...): Extension method for modules and optimizers for easily saving TorchSharp models in a format that can be directly loaded in PyTorch (usingtorch.load), offering cross-platform model compatibility.module.load_safetensors(...),module.save_safetensors(...): Extension methods for modules for easily saving and loading model weights using the safetensors format.module.load_checkpoint(...): Extension method for loading in a checkpoint (both safetensors and regular pytorch, including sharded models) from a directory saved using HuggingFace'sPreTrainedModel.save_pretrained()method.
Getting Started
Installation
TorchSharp.PyBridge is available on NuGet. You can install it using the following command:
.NET CLI
dotnet add package TorchSharp.PyBridge
NuGet Package Manager
Install-Package TorchSharp.PyBridge
Prerequisites
- .NET SDK
- TorchSharp library
Usage
Loading a PyTorch Model in .NET
Saving the model in Python:
import torch
model = ...
torch.save(model.state_dict(), 'path_to_your_model.pth')
Loading it in C#:
using TorchSharp.PyBridge;
var model = ...;
model.load_py("path_to_your_model.pth");
Saving a TorchSharp Model for PyTorch
To save a model in a format compatible with PyTorch:
using TorchSharp.PyBridge;
var model = ...;
model.save_py("path_to_save_model.pth");
And loading it in in Python:
import torch
model = ...
model.load_state_dict(torch.load('path_to_save_model.pth'))
Contributing
Contributions to TorchSharp.PyBridge are welcome.
Acknowledgments
This project makes use of the pickle library, a Java and .NET implementation of Python's pickle serialization protocol, developed by Irmen de Jong. The pickle library plays a vital role in enabling the serialization features within TorchSharp.PyBridge. We extend our thanks to the developer for their significant contributions to the open-source community. For more details about the pickle library, please visit their GitHub repository.
Support and Contact
For support, questions, or feedback, please open an issue in the GitHub repository.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net6.0
- Razorvine.Pickle (>= 1.5.0)
- TqdmSharp (>= 1.3.3)
NuGet packages (5)
Showing the top 5 NuGet packages that depend on TorchSharp.PyBridge:
| Package | Downloads |
|---|---|
|
NeuralCodecs
Neural audio codec implementations in .NET. |
|
|
Microsoft.ML.GenAI.LLaMA
Package Description |
|
|
Microsoft.ML.GenAI.Mistral
Package Description |
|
|
Microsoft.ML.GenAI.Phi
Package Description |
|
|
Maomi.Torch
C# Pytorch 深度学习框架扩展包. |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on TorchSharp.PyBridge:
| Repository | Stars |
|---|---|
|
dotnet/machinelearning
ML.NET is an open source and cross-platform machine learning framework for .NET.
|
1.4.3:
- Fixed #21: `strict` is not passed to `load_safetensor` in `load_checkpoint` extension
1.4.2:
- PR #20: Optimize load_py for memory and speed (@ejhg)
1.4.1:
- Fixed #17: How to disable tqdm output when loading sharded safetensors
1.4.0:
- Exposed `Safetensors`, `PytorchPickler` and `PytorchUnpickler` to allow for loading/saving python tensors outside of a model.
- Fixed #16: SaveStateDict calls itself recursively and fails on locked file
1.3.2:
- Fixed #13: UnpickleStateDict on BatchNorm2d error
1.3.1:
- Fixed error on Apple Silicon devices
1.3.0:
- Added support for loading tensors that are greater than 2GB (following the update in TorchSharp 0.102.0)
- Added support for loading and saving safetensors when model isn't on CPU.