Code Monkey home page Code Monkey logo

facebookresearch / fbpcs Goto Github PK

View Code? Open in Web Editor NEW
137.0 31.0 161.0 20.71 MB

FBPCS (Facebook Private Computation Solutions) leverages secure multi-party computation (MPC) to output aggregated data without making unencrypted, readable data available to the other party or any third parties. Facebook provides impression & opportunity data, and the advertiser provides conversion / outcome data.

License: MIT License

Shell 3.94% CMake 0.41% Dockerfile 0.23% Python 48.25% C++ 42.23% C 0.23% Makefile 0.22% HCL 2.77% Java 1.67% Thrift 0.05%

fbpcs's Introduction

PCS (Private Computation Solutions)

Private Computation Solutions provides multiple solutions that leverage various Privacy Enhancing Technologies (e.g., multi-party computation, differential privacy) used across Measurement and Signals. The existing solutions includes Private Lift and Private Attribution, which allow calculations of Lift and Attribution metrics without revealing opportunity or conversion data on an individual level through 2PC.

AWS Infra Set-up

Docker Images

License

PCS is MIT licensed, as found in the LICENSE file.

fbpcs's People

Contributors

adshastri avatar ajaybhargavb avatar ajitfb avatar ankushksingh avatar anthonyzhang25 avatar ashiquemfb avatar corbantek avatar danbunnell avatar evechenc avatar gitfish77 avatar haipengguan avatar joe1234wu avatar jrodal98 avatar leegross avatar lucaskt85 avatar marksliva avatar mdas7 avatar musebc avatar olivia-liu avatar peking2 avatar r-barnes avatar rohantiru11 avatar ruiyuzhu avatar somnathfb avatar taoyong-ty-zz avatar tbags avatar wenhaizhumeta avatar yigezhu avatar yutong-w avatar zhuang-93 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fbpcs's Issues

University Project

Hello,
I wish to contribute to this issue. Please assign me this.
Thank you.

Unit tests configurations for emp_games

Hello Facebook team,

I am attempting to run the unit tests within the repo using CLion IDE. To be more specific, I am trying to setting up pcf2's unit tests by extending the CMakeLists.txt file under fbpcs/docker/emp_games. Currently, I can successfully load CMakeLists.txt but keep having a linker error below. My understanding is the complier complains about the missing dependency of folly package within the fbpcf.

====================[ Build | pcf2_attribution_calculator_test | Debug - pcs ]====
/usr/bin/cmake --build /root/snap-int-fbpcs/cmake-build-debug---pcs --target pcf2_attribution_calculator_test -- -j 8
[ 13%] Built target empgamecommon
[ 33%] Built target gtest
[ 40%] Built target perftools
[ 53%] Built target gtest_main
[ 60%] Linking CXX executable bin/pcf2_attribution_calculator_test
/usr/bin/ld: /usr/local/lib/libfbpcf.a(S3Util.cpp.o): in function `fbpcf::aws::uriToObjectReference(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
S3Util.cpp:(.text+0x87d): undefined reference to `folly::Uri::Uri(folly::Range<char const*>)'
/usr/bin/ld: /usr/local/lib/libfbpcf.a(GCSUtil.cpp.o): in function `fbpcf::gcp::uriToObjectReference(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
GCSUtil.cpp:(.text+0x1dd): undefined reference to `folly::Uri::Uri(folly::Range<char const*>)'
/usr/bin/ld: CMakeFiles/pcf2_attribution_calculator_test.dir/fbpcs/emp_games/pcf2_attribution/test/AttributionAppTest.cpp.o: in function `pcf2_attribution::verifyOutput(pcf2_attribution::AttributionOutputMetrics, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
/root/snap-int-fbpcs/fbpcs/emp_games/pcf2_attribution/test/AttributionTestUtils.h:31: undefined reference to `folly::compareJson(folly::Range<char const*>, folly::Range<char const*>)'
collect2: error: ld returned 1 exit status
make[3]: *** [CMakeFiles/pcf2_attribution_calculator_test.dir/build.make:222: bin/pcf2_attribution_calculator_test] Error 1
make[2]: *** [CMakeFiles/Makefile2:226: CMakeFiles/pcf2_attribution_calculator_test.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:233: CMakeFiles/pcf2_attribution_calculator_test.dir/rule] Error 2
make: *** [Makefile:201: pcf2_attribution_calculator_test] Error 2

However, when I looked over this website and double-checked the common.cmake within the fbpcs repo, I believe the folly package has been already included in the common cmake. Furthermore, since the CMakeLists.txt I am using now has already include("common.cmake"), the Uri should have been included. Please feel free to correct me if I am wrong.

I also try copying the following block of code into the CMakeLists.txt but the same linker error still show up:

find_package(folly REQUIRED)
set_and_check(FOLLY_INCLUDE_DIR /usr/local/include/folly)
set_and_check(FOLLY_CMAKE_DIR /usr/local/lib/cmake/folly)
if(NOT TARGET Folly::folly)
    include("${FOLLY_CMAKE_DIR}/folly-targets.cmake")
endif()
if(NOT folly_FIND_QUIETLY)
    message(STATUS "Found folly: ${PACKAGE_PREFIX_DIR}")
endif()

The following represents my sample code for building a gtest target:

# Test - pcf2_aggregation_test
file(GLOB pcf2_aggregation_test_src
        "fbpcs/emp_games/pcf2_aggregation/**.h"
        "fbpcs/emp_games/pcf2_aggregation/**.cpp"
        "fbpcs/emp_games/pcf2_aggregation/test/**.h"
        "fbpcs/emp_games/pcf2_aggregation/test/**.cpp"
        "fbpcs/emp_games/common/TestUtil.**"
)
add_executable(
        pcf2_aggregation_calculator_test
        ${pcf2_aggregation_test_src})
target_link_libraries(
        pcf2_aggregation_calculator_test
        empgamecommon
        perftools
        gtest_main
        Folly:folly
)
install(TARGETS pcf2_aggregation_calculator_test DESTINATION bin)

Could you please share any advice with me on how to proceed with setting up unit tests? Many thanks in advance!

Context:

  1. I copy-paste the CMakeLists.txt file under fbpcs/docker/emp_games to the root directory and then try extending files upon that.
  2. I also have fbpcf repo under the same directory as fbpcs.

Best regards,
Hokssey

Facebook --> Meta naming

We should update the naming from "Facebook Private Computation Solutions" to "Meta Private Computation Solutions" and all the places in the documentation where we use that.

FB-specific instructions in readme

in the readme file under "emp-games" the following paragraph exists

Note: At this time, FB does not allow docker builds on FB devservers. In order to build emp_games docker image(s) you will need to either clone fbcode locally to a docker capable machine (your laptop) or at a minimum copy the "emp_games" folder to a machine to a capable of using docker.

It seems very specific to FB employees. Wondering if it make sense to put it elsewhere instead of exposing it to the public github.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.