Using Examine¶
We recommend using Thunder’s examine()
before compiling a function or a module.
Thunder cannot run every PyTorch module, but you can quickly find out what is missing using examine()
.
examine()
not only determines if Thunder can compile the module, but provides a helpful report to use when filing an issue requesting support.
You can run examine like this:
from thunder.examine import examine
model = MyModel(...)
examine(model, *args, **kwargs)
Where *args and **kwargs
are valid inputs to the model. If examine determines that Thunder can run the module or function as expected, it will print:
The function appears to be working as expected
When examine
encounters a module or function with one or more operators it doesn’t support, it will specify the operators, like this:
def foo(a):
return torch.triu(a)
import torch
import thunder
from thunder.examine import examine
a = torch.full((2, 2), 1., device='cuda')
examine(foo, a)
Running the above will print:
Found 1 distinct operations, of which 0 (0.0%) are supported
Please file an issue requesting the following operators here: https://github.com/Lightning-AI/lightning-thunder/issues/new
_VariableFunctionsClass.triu of torch
To recap, examine()
lets you know if Thunder can run a module, and if it can’t it will provide a report to file an issue asking for support.