SYNTOLOGY HomeExplorerAtlasCodeMethodologyAboutDevelopersFeedPricing
Paper · 1806.03287 · 2018

Slalom: Fast, Verifiable and Private Execution of Neural Networks in Trusted Hardware

arXiv · PDF · Open in the Atlas

Code that ran

We lifted 15 functions out of this paper's own repositories and ran 4 of them in a sandbox. "Ran" means the function executed on a synthesized input and returned a value. It is not a reproduction of the paper's results.

RepositoryRoleRan
ftramer/slalom canonical 4 of 15
FunctionStatusWhere it lives
get_topk_acc Ran ftramer/slalom/python/slalom/utils.py
code served (permissive licence) · get_code("93b77082971aa931")
preproc Ran ftramer/slalom/python/slalom/models.py
code served (permissive licence) · get_code("ef3e4ee2d57fea02")
preprocess_input Ran ftramer/slalom/python/slalom/mobilenet_sep.py
code served (permissive licence) · get_code("de695392eae44227")
size_to_mb Ran ftramer/slalom/python/slalom/utils.py
code served (permissive licence) · get_code("2298663a26889386")
apply_with_random_selector Not yet run ftramer/slalom/python/preprocessing/inception_preprocessing.py
code served (permissive licence) · get_code("e82919ec054e8a8b")
conv_block Not yet run ftramer/slalom/python/slalom/resnet.py
code served (permissive licence) · get_code("1f8b213998b7f612")
distort_color Not yet run ftramer/slalom/python/preprocessing/inception_preprocessing.py
code served (permissive licence) · get_code("7d9923a3d6958b99")
distorted_bounding_box_crop Not yet run ftramer/slalom/python/preprocessing/inception_preprocessing.py
code served (permissive licence) · get_code("f1bd3b4c3f92fe63")
identity_block Not yet run ftramer/slalom/python/slalom/resnet.py
code served (permissive licence) · get_code("9dd7bc39a7aa04ea")
log2 Not yet run ftramer/slalom/python/slalom/quant_layers.py
code served (permissive licence) · get_code("a20066212a0e7e85")
preproc_tf Not yet run ftramer/slalom/python/slalom/models.py
code served (permissive licence) · get_code("0d0120e2b5dcdf5c")
preprocess_for_eval Not yet run ftramer/slalom/python/preprocessing/cifarnet_preprocessing.py
code served (permissive licence) · get_code("8dd44485a0d07e53")
preprocess_for_train Not yet run ftramer/slalom/python/preprocessing/cifarnet_preprocessing.py
code served (permissive licence) · get_code("a7e384fd44f9fdc9")
preprocess_image Not yet run ftramer/slalom/python/preprocessing/cifarnet_preprocessing.py
code served (permissive licence) · get_code("6c265d4a08d5f4d4")
preprocess_image Not yet run ftramer/slalom/python/preprocessing/lenet_preprocessing.py
code served (permissive licence) · get_code("5329cb0ae570d122")

Repositories linked to this paper

Some links come from the archived Papers with Code dataset (CC BY-SA 4.0): attribution and licence.

Abstract

As Machine Learning (ML) gets applied to security-critical or sensitive domains, there is a growing need for integrity and privacy for outsourced ML computations. A pragmatic solution comes from Trusted Execution Environments (TEEs), which use hardware and software protections to isolate sensitive computations from the untrusted software stack. However, these isolation guarantees come at a price in performance, compared to untrusted alternatives. This paper initiates the study of high performance execution of Deep Neural Networks (DNNs) in TEEs by efficiently partitioning DNN computations between trusted and untrusted devices. Building upon an efficient outsourcing scheme for matrix multiplication, we propose Slalom, a framework that securely delegates execution of all linear layers in a DNN from a TEE (e.g., Intel SGX or Sanctum) to a faster, yet untrusted, co-located processor. We evaluate Slalom by running DNNs in an Intel SGX enclave, which selectively delegates work to an untrusted GPU. For canonical DNNs (VGG16, MobileNet and ResNet variants) we obtain 6x to 20x increases in throughput for verifiable inference, and 4x to 11x for verifiable and private inference.

For agents

The same record, over MCP at https://syntology.ai/mcp:

get_harvested_code_for_paper("1806.03287")
get_code_for_paper("1806.03287")
have("1806.03287")

Connect an agent — have() is free.