Welcome! If you are looking to explore the power of a generalized tree-based tensor structure, you have come to the right place. In this article, we will guide you through the installation and first steps of using DI-Treetensor, a project developed by OpenDILab Contributors.
What is DI-Treetensor?
DI-Treetensor is a cutting-edge tool that allows you to handle tensor operations in a convenient and structured manner. Think of it as a tree gardener, where each branch represents data organized into a tree structure, simplifying calculations that inherently involve tree-based data.
Installation
Installing DI-Treetensor is a breeze! You can do it via the command line using pip. Here’s how:
pip install di-treetensor
For detailed installation instructions, please refer to the Installation Guide.
Documentation
Comprehensive documentation is available on the official DI-Treetensor website. Currently, only the English version is provided, while the Chinese documentation is still in development.
Quick Start
Let’s jump right in and create a tree value object based on FastTreeValue! Imagine starting a garden—this will be your seed that you nurture into a vast network of branches and leaves.
import builtins
import os
from functools import partial
import treetensor.torch as torch
print = partial(builtins.print, sep=os.linesep)
if __name__ == "__main__":
# create a tree tensor
t = torch.randn(a: (2, 3), b: x: (3, 4))
print(t)
print(torch.randn(4, 5)) # create a normal tensor
print()
# structure of tree
print("Structure of tree")
print(t.a:, t.a) # t.a is a native tensor
print(t.b:, t.b) # t.b is a tree tensor
print(t.b.x, t.b.x) # t.b.x is a native tensor
print()
# math calculations
print("Math calculation")
print(t ** 2:, t ** 2)
print(torch.sin(t).cos(), torch.sin(t).cos())
print()
# backward calculation
print("Backward calculation")
t.requires_grad_(True)
t.std().arctan().backward()
print("grad of t:", t.grad)
print()
# native operation
# all the ops can be used as the original usage of torch
print("Native operation")
print(torch.sin(t.a), torch.sin(t.a)) # sin of native tensor
Here’s an analogy: creating a tree tensor is like planting a seed, where each part of the tensor (branches and leaves) can perform its own operations while still being connected to the main trunk (the root tensor). In our code, we first create a tree tensor `t`, then explore its structure, perform math calculations, and conduct backwards operations to analyze gradients. This showcases the beauty of the tree structure as it facilitates complex interactions while remaining manageable.
Troubleshooting
If you encounter any issues during installation or execution, here are a few troubleshooting ideas:
- Ensure that you have the latest version of Python and pip installed.
- Check your network connection if you face problems while installing via pip.
- Review the code for any syntax errors, especially if you are modifying it.
- You can search for issues raised by others on the GitHub issues page.
For further insights, updates, or to collaborate on AI development projects, stay connected with fxis.ai.
Extension of Capabilities
If you need to translate a tree value object to runnable source code, consider using the potc-treevalue plugin. Here’s how to install it:
pip install DI-treetensor[potc]
This plugin can help you translate your objects to runnable Python source code, which can later be loaded into objects again by the Python interpreter.
For more information on these plugins, visit:
Contribution
We appreciate all contributions to improve DI-Treetensor, both in logic and system designs. You can refer to the CONTRIBUTING.md for more guidance.
If you’d like to discuss in detail, join our Slack communication channel or reach out to the core developer Hans Bug.
License
DI-Treetensor is released under the Apache 2.0 license.
At fxis.ai, we believe that such advancements are crucial for the future of AI, as they enable more comprehensive and effective solutions. Our team is continually exploring new methodologies to push the envelope in artificial intelligence, ensuring that our clients benefit from the latest technological innovations.

