Skip to main content

机器学习和联邦学习库。

项目描述

行之有效的联邦学习和数据分析



Python 版本 PyPI 最新版本 PyPI 下载 编解码器 代码风格:黑色 保安:强盗 已检查 mypy 类型 片状8 执照

目录

使用 Docker 镜像

有两个 docker 镜像,一个用于运行 Pod ( ghcr.io/bitfount/pod:stable),另一个用于运行建模任务 ( ghcr.io/bitfount/modeller:stable)。

这两个图像都需要config.yaml向它们提供一个文件,默认情况下它们会尝试从/mount/config/config.yamldocker 容器内加载它。您可以通过将卷挂载/绑定到容器来轻松提供此文件,执行此操作的方式可能因您的平台/环境(Docker/docker-compose/ECS)而异,如果您在执行此操作时遇到任何问题,请随时联系给我们。

或者,您可以使用docker cp将配置文件复制到已停止的容器中。

如果您使用的是 CSV 数据源,那么您还需要将数据安装到容器中,这需要安装在配置中指定的路径上,为简单起见,最简单的方法是将您的配置和 CSV 放在同一目录,然后将其挂载到容器中。

容器运行后,您需要检查日志并完成登录步骤,以允许您的容器通过 Bitfount 进行身份验证。该过程与在本地运行时(例如教程)相同,只是我们无法为您自动打开登录页面。

运行 Python 代码

安装

在哪里得到它

Python 包索引 (PyPI)中提供了最新发布版本的二进制安装程序。

pip install bitfount

如果您打算将该bitfount包与 Jupyter Notebooks 一起使用,我们建议您安装 splinter 包bitfount[tutorials],这将确保您运行兼容的 jupyter 依赖项。

pip install "bitfount[tutorials]"

从源安装

要从源代码安装bitfount,您需要创建一个 python 虚拟环境。

bitfount目录中(与克隆 git repo 后找到此文件的目录相同),执行:

pip install -r requirements/requirements.in

这些要求设置为允许范围,但不保证适用于所有版本,尤其是最新版本。对于保证有效的这些要求的固定版本,请运行以下命令:

pip install -r requirements/requirements.txt

对于 MacOS,您还需要安装libomp

brew install libomp

入门(教程)

为了运行教程,您还需要安装教程要求:

pip install -r requirements/requirements-tutorial.txt

要开始在联合设置中使用 Bitfount 包,我们建议您从我们的教程开始。运行jupyter notebook 并打开第一个教程:tutorials/01_running_a_pod.ipynb

联合训练脚本

已经提供了一些简单的脚本来从配置文件运行 Pod 或建模作业。

⚠️ 如果您从源安装(例如 from git clone)运行,您将需要使用python -m scripts.<script_name> 而不是bitfount <script_name>直接使用。

要运行 pod:

bitfount run_pod --path_to_config_yaml=<CONFIG_FILE>

要运行建模作业:

bitfount run_modeller --path_to_config_yaml=<CONFIG_FILE>

基本本地使用

除了提供在远程 pod 中使用数据的能力外,该软件包还支持本地 ML 训练。下面给出了一些用于此目的的示例代码。

1. 导入位元

import bitfount as bf

2.创建DataSource并加载数据

census_income = bf.CSVSource(
    path="https://bitfount-hosted-downloads.s3.eu-west-2.amazonaws.com/bitfount-tutorials/census_income.csv",
    ignore_cols=["fnlwgt"],
)
census_income.load_data()

3. 创建架构

schema = bf.BitfountSchema(
    census_income,
    table_name="census_income",
    force_stypes={
        "census_income": {
            "categorical":[
                "TARGET",
                "workclass",
                "marital-status",
                "occupation",
                "relationship",
                "race",
                "native-country",
                "gender",
                "education"
            ]
        }
    }
)

4. 转换数据

clean_data = bf.CleanDataTransformation()
processor = bf.TransformationProcessor([clean_data], schema.get_table_schema("census_income"))
census_income.data = processor.transform(census_income.data)
schema.add_datasource_tables(census_income, table_name="census_income")

5. 创建数据结构

census_income_data_structure=bf.DataStructure(
  table="census_income",
  target="TARGET",
)

6. 创建和训练模型

nn = bf.PyTorchTabularClassifier(
    datastructure=census_income_data_structure,
    schema=schema,
    epochs=2,
    batch_size=256,
    optimizer=bf.Optimizer("RAdam", {"lr": 0.001}),
)
nn.fit(census_income)
nn.serialize("demo_task_model.pt")

7. 评估

preds, target = nn.evaluate()
metrics = bf.MetricCollection.create_from_model(nn)
results = metrics.compute(target, preds)
print(results)

8. 断言结果

import numpy as np
assert nn._validation_results[-1]["validation_loss"] is not np.nan
assert results["AUC"] > 0.7

执照

该软件的许可证可在LICENSE文件中找到。这可以在 Github 存储库以及 Docker 映像中找到。

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

bitfount-0.5.35.tar.gz (644.5 kB 查看哈希

已上传 source

内置分布

bitfount-0.5.35-py3-none-any.whl (781.7 kB 查看哈希

已上传 py3