Managing Multiple Bitfount Accounts
You may find yourself using multiple Bitfount accounts on the same machine if you:
- Are affiliated with multiple institutions/email domains.
- Maintain accounts with access to different datasets or code.
- Simply wish to test federated learning and evaluation techniques as if you are multiple users.
There are two important parts that need to be configured correctly when using multiple accounts. First, you will need to specify the user account and second, you will need to ensure that appropriate adjustments are made for your chosen authentication method.
Specifying the username
There are two ways to specify which user account you are using
- Manually specify a username
- Leave Bitfount to automatically detect your username from you logging in
through a web browser. In this case, the username is stored in your
BITFOUNT_HOME
folder
When using yaml, the username is specified at the root level of the yaml. For example:
pod_name: census-income
datasource: CSVSource
username = "your-username"
### Input rest of pod configuration
If you are using the python API, you can pass username as a parameter to
the Pod
constructor, and protocol.run
and model.fit
methods:
p = Pod(name="census-income", username="your-username")
...
p = FederatedAveraging(...)
p.run(username="your-username", ...)
...
m = PyTorchLogisticRegression(...)
m.fit(username="your-username", ...)
If you want to use your web browser's authentication to specify your username
but also want to run multiple accounts simultaneously then you will need
to specify different BITFOUNT_HOME
configurations for each user. Each
separate BITFOUNT_HOME
configuration will then have a different default username
which is used, without any need for specifying it in YAML or the Python API.
The BITFOUNT_HOME
environment variable should point to
a path where the default username and tokens can be stored. By default
this is set to ~/.bitfount
. For example, you could run a Pod via
BITFOUNT_HOME="/file/location_1/.bitfount/" bitfount run_pod /path/to/yaml
Ensuring authentication works
Besides the requirement to specify the username, running multiple accounts on the same machine may require some additional steps depending on the authentication method.
For setting up Pods, we recommend using API keys for authentication, as described in the API key setup documentation.
When running a task as a data scientist, the steps for logging in as the correct user in the correct browser window will depend on the authentication mode:
- If you are using
oidc-device-code
authentication (the default) then each time you need to authenticate, Bitfount will attempt to do this through your default browser. If the default browser is logged in with a different account you will need to copy the URL to a separate browser or incognito tab to authenticate. - If you are using
oidc-auth-code
authentication then the flow will only work if you ensure that the browser window opens where you can log in as the desired user. The easiest way of ensuring this is to simply run a jupyter notebook and then open up the notebook in a separate browser or in incognito mode.