MCPcopy Create free account
hub / github.com/Tencent/TurboTransformers / PYBIND11_MODULE

Function PYBIND11_MODULE

turbo_transformers/python/pybind.cpp:63–235  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

61}
62
63PYBIND11_MODULE(turbo_transformers_cxx, m) {
64 char *argv[] = {strdup("turbo_transformers_cxx"), nullptr};
65 int argc = 1;
66 loguru::init(argc, argv);
67
68 auto config_module =
69 m.def_submodule("config", "compile configuration of turbo_transformers");
70
71 BindConfig(config_module);
72
73 m.def("set_stderr_verbose_level",
74 [](int v) { loguru::g_stderr_verbosity = v; });
75 m.def("enable_perf", &core::EnableGperf);
76 m.def("disable_perf", &core::DisableGperf);
77 m.def("set_num_threads", &core::SetNumThreads);
78
79 py::class_<core::Tensor>(m, "Tensor")
80 .def_static("from_dlpack",
81 [](py::capsule capsule) -> std::unique_ptr<core::Tensor> {
82 auto tensor = (DLManagedTensor *)(capsule);
83 PyCapsule_SetName(capsule.ptr(), "used_tensor");
84 return absl::make_unique<core::Tensor>(tensor);
85 })
86 .def("to_dlpack",
87 [](core::Tensor &tensor) -> py::capsule {
88 auto *dlpack = tensor.ToDLPack();
89 return py::capsule(dlpack, "dltensor", DLPack_Capsule_Destructor);
90 })
91 .def("n_dim", &core::Tensor::n_dim)
92 .def("shape", &core::Tensor::shape)
93 .def("float_data", &core::Tensor::data<float>)
94 .def_static("create_empty", [] { return core::Tensor(nullptr); });
95
96 py::class_<layers::BERTEmbedding>(m, "BERTEmbedding")
97 .def(py::init(
98 [](core::Tensor &word_embeddings, core::Tensor &position_embeddings,
99 core::Tensor &token_type_embeddings,
100 core::Tensor &layer_norm_weights,
101 core::Tensor &layer_norm_bias) -> layers::BERTEmbedding * {
102 return new layers::BERTEmbedding(
103 std::move(word_embeddings), std::move(position_embeddings),
104 std::move(token_type_embeddings), std::move(layer_norm_weights),
105 std::move(layer_norm_bias));
106 }))
107 .def("__call__", &layers::BERTEmbedding::operator());
108
109 py::class_<layers::BertAttention>(m, "BertAttention")
110 .def(py::init([](core::Tensor &qkv_weight, core::Tensor &qkv_bias,
111 core::Tensor &dense_weight, core::Tensor &dense_bias,
112 core::Tensor &layer_norm_weight,
113 core::Tensor &layer_norm_bias,
114 int num_attention_heads) -> layers::BertAttention * {
115 return new layers::BertAttention(
116 std::move(qkv_weight), std::move(qkv_bias), std::move(dense_weight),
117 std::move(dense_bias), std::move(layer_norm_weight),
118 std::move(layer_norm_bias), num_attention_heads);
119 }))
120 .def("__call__", &layers::BertAttention::operator());

Callers

nothing calls this directly

Calls 3

BindConfigFunction · 0.85
TensorClass · 0.85
ToDLPackMethod · 0.80

Tested by

no test coverage detected