15 releases

new 0.21.4 Apr 23, 2024
0.21.3 Apr 3, 2024
0.21.2 Mar 29, 2024
0.21.1 Feb 8, 2024
0.20.18 Aug 30, 2023

#887 in Machine learning

Download history 15/week @ 2024-01-15 14/week @ 2024-02-05 6/week @ 2024-02-12 16/week @ 2024-02-19 30/week @ 2024-02-26 13/week @ 2024-03-04 24/week @ 2024-03-11 4/week @ 2024-03-18 105/week @ 2024-03-25 152/week @ 2024-04-01 156/week @ 2024-04-08 9/week @ 2024-04-15

422 downloads per month
Used in 2 crates

MIT/Apache

1.5MB
45K SLoC

tract-tflite

unimplemented, sausage is being made. If you want to help feel free to open a PR.

link to the tflite c api

link to the related issue

The generated code handles creating a model from a flatbuffer table. Right now the main task (as far as I understand) is to start adding the code to build a Tract Model from the ModelBuffer.

So the modelBuffer(the model read from a flatbuffer file) has a few components (with associated functions) worth looking at: operator_codes, subgraphs, and then buffers.

  • subgraphs are likely the primary thing needed to create a tract model
    • composed of tensors, inputs,outputs, operators, and a name
    • input and output are fairly small vectors, I suspect they may be indices
  • buffers are sometimes empty (why?)

Metadata

Tensors

  • probably need to convert from the generated datatypes to Tract's DatumType. it's in the toplevel data crate.
    • this is part of the depenendency tract-core
  • SO: what a variant tensor?

Operators

  • the list of builtin Operators can be found in the generated tflite schema around line 443 in the const array ENUM_VALUES_BUILTIN_OPERATOR: [BuiltinOperator; 162].
  • the official docs on supported supset of tensorflow operators in TFLite
  • the tflite c code

Subgraphs

Right now, I'm testing with a specific model under test data, so this might not generalize to other models. If you open the model in netron, you'll find 3 separate graphs: main, sequential/net/while_cond, and sequential/net/while_body.

In the main graph, node 10 is just listed as while, but it's actually composed of the other subgraphs.

scratchpad

I created a repository for the sole purpose of poking around with tflite models, if you would like to add a model for testing please put it inside test data, and add any test input to lfs. If you write some utility that would be useful for others contributers, feel free to add it. Otherwise just clone it and forget it, it's just trow-away code.

Dependencies

~14MB
~263K SLoC