1+ ARG VERSION=dev
2+ ARG IS_BUILDING_GPU_IMAGE=0
3+ #ARG BASE_IMAGE=continuumio/miniconda3:4.7.12
4+ ARG BASE_IMAGE=fedml/fedml:latest-torch1.13.1-cuda11.6-cudnn8-devel
5+ ARG FEDML_PIP_HOME=/usr/local/lib/python3.8/dist-packages/fedml
6+ FROM ${BASE_IMAGE} AS fedml-image-base
7+
8+ ADD ./devops/scripts/aws ./fedml/aws
9+ ADD ./devops/scripts/setup-aws-cli.sh ./fedml/setup-aws-cli.sh
10+ ADD ./devops/scripts/set-aws-credentials.sh ./fedml/set-aws-credentials.sh
11+ ADD ./devops/scripts/docker /usr/bin/
12+ ADD ./devops/scripts/kubectl /usr/bin/
13+
14+ ADD ./devops/scripts/requirements.txt ./fedml/requirements.txt
15+ ADD ./devops/scripts/setup-conda-env.sh ./fedml/setup-conda-env.sh
16+
17+ RUN chmod a+x /usr/bin/docker
18+ RUN chmod a+x /usr/bin/kubectl
19+ RUN chmod a+x ./fedml/setup-aws-cli.sh
20+ RUN chmod a+x ./fedml/set-aws-credentials.sh
21+ RUN ./fedml/setup-aws-cli.sh
22+
23+ RUN apt-get update
24+ #RUN apt-get -y install gettext-base
25+ #RUN apt-get -y install unar wget
26+ #RUN apt-get -y install libquadmath0
27+
28+ RUN sudo DEBIAN_FRONTEND=noninteractive apt-get install -qq gettext-base < /dev/null > /dev/null
29+ RUN sudo DEBIAN_FRONTEND=noninteractive apt-get install -qq unar wget < /dev/null > /dev/null
30+ RUN sudo DEBIAN_FRONTEND=noninteractive apt-get install -qq libquadmath0 < /dev/null > /dev/null
31+
32+ RUN chmod a+x ./fedml/setup-conda-env.sh
33+ RUN bash ./fedml/setup-conda-env.sh ${IS_BUILDING_GPU_IMAGE}
34+
35+ #RUN pip install --upgrade pip
36+ #RUN pip3 uninstall fedml
37+
38+ RUN pip3 install --upgrade fedml
39+ RUN pip3 install -r ./fedml/requirements.txt
40+ RUN pip3 install --upgrade gevent
41+
42+
43+ FROM ${BASE_IMAGE} AS fedml-training-env-base
44+
45+ ADD ./devops/scripts/runner.sh ./fedml/runner.sh
46+
47+ ADD ./devops/scripts/requirements.txt ./fedml/requirements.txt
48+
49+ RUN chmod a+x ./fedml/runner.sh
50+ RUN echo "Updating..."
51+
52+ RUN pip3 install -r ./fedml/requirements.txt
53+
54+ COPY ./python ./fedml/fedml-pip
55+ COPY ./python/fedml ${FEDML_PIP_HOME}
56+ WORKDIR ./fedml/fedml-pip
57+ RUN pip3 install -e ./
58+ #RUN pip3 install -e '.[tensorflow]'
59+ #RUN pip3 install -e '.[jax]'
60+ #RUN pip3 install -e '.[mxnet]'
61+
62+ WORKDIR /fedml
63+
64+
65+ FROM ${BASE_IMAGE} AS fedml-image-base-with-version
66+
67+ RUN pip3 install MNN==1.1.6
68+
69+ WORKDIR /fedml
70+
71+ COPY --from=fedml-training-env-base /fedml/fedml-pip /fedml/fedml-pip
72+ COPY --from=fedml-training-env-base /fedml/fedml-pip/fedml ${FEDML_PIP_HOME}
73+
74+ ENV MODE=normal FEDML_VERSION=${VERSION} ACCOUNT_ID=0 SERVER_DEVICE_ID=0 \
75+ FEDML_PACKAGE_NAME=package FEDML_PACKAGE_URL=s3_url \
76+ FEDML_RUNNER_CMD=3dsad
77+
78+ CMD fedml login ${ACCOUNT_ID} -v ${FEDML_VERSION} -s -r cloud_server -rc ${FEDML_RUNNER_CMD} -id ${SERVER_DEVICE_ID}; ./runner.sh
79+
80+
81+ FROM ${BASE_IMAGE} AS fedml-client-agent
82+
83+ WORKDIR /fedml
84+
85+ COPY --from=fedml-training-env-base /fedml/fedml-pip /fedml/fedml-pip
86+ COPY --from=fedml-training-env-base /fedml/fedml-pip/fedml ${FEDML_PIP_HOME}
87+
88+ ENV ACCOUNT_ID=0 FEDML_VERSION=${VERSION} CLIENT_DEVICE_ID=0 CLIENT_OS_NAME=linux
89+
90+ CMD fedml login ${ACCOUNT_ID} -v ${FEDML_VERSION} -c -id ${CLIENT_DEVICE_ID} -os ${CLIENT_OS_NAME}; ./runner.sh
91+
92+
93+ FROM ${BASE_IMAGE} AS fedml-server-agent
94+
95+ WORKDIR /fedml
96+
97+ COPY --from=fedml-training-env-base /fedml/fedml-pip /fedml/fedml-pip
98+ COPY --from=fedml-image-base /fedml/fedml-pip/python/fedml ${FEDML_PIP_HOME}
99+
100+ ENV MODE=normal FEDML_VERSION=${VERSION} ACCOUNT_ID=0 SERVER_AGENT_ID=0 \
101+ AWS_IAM_ACCESS_ID=0 \
102+ AWS_IAM_ACCESS_KEY=0 \
103+ AWS_REGION=0
104+
105+ CMD ./set-aws-credentials.sh ${AWS_IAM_ACCESS_ID} ${AWS_IAM_ACCESS_KEY} ${AWS_REGION};fedml login ${ACCOUNT_ID} -v ${FEDML_VERSION} -s -r cloud_agent -id ${SERVER_AGENT_ID};./runner.sh
106+
107+
108+ FROM ${BASE_IMAGE} AS fedml-edge-server
109+
110+ WORKDIR /fedml
111+
112+ COPY --from=fedml-training-env-base /fedml/fedml-pip /fedml/fedml-pip
113+ COPY --from=fedml-image-base /fedml/fedml-pip/python/fedml ${FEDML_PIP_HOME}
114+
115+ ENV ACCOUNT_ID=0 FEDML_VERSION=${VERSION} SERVER_DEVICE_ID=0 SERVER_OS_NAME=linux
116+
117+ CMD fedml login ${ACCOUNT_ID} -v ${FEDML_VERSION} -s -id ${SERVER_DEVICE_ID} -os ${SERVER_OS_NAME};./runner.sh
0 commit comments