# _teaching_ history = model.fit(train_dataset,epochs=epochs, callbacks= callbacks)
## Appendix A Appendix A.1 MPICH Base Image
### MPICH Node Image  
Listing A2 contains the contents of the Dockerfile for building the cluster node image with MPICH dependencies installed in the Alpine distribution. Listing A2 The Dockerfile file for the Alpine MPICH node image. ```
ARG:MPI_VERSION_TAG=\"4.1.1\" ARGBASE_DISTRO_TAG=\"alpine\" ARG:BASE_IMAGE_NAME=\"pikrog/mpich FROM$[BASE_IMAGE_NAME]:$[MPI_VERSION_TAG]-$[BASE_DISTRO_TAG]
```
RUNap add --no-cacheopensshdumb-initbind-toolsshadow WORXDR/etc/ssh RUN\ echo \"PasswordAuthentication_no\" >>sshd_config <&&echo \"ChallengeResponseAuthentication_no\" >>sshd_config \ &&echo \"PubkeyAuthentication_yes\" >>ssh_config \ &&echo \"PubkeyAuthentications_yes\" >>ssh_config \ &&echo \"StrictHostKeyChecking_no\" >>ssh_config \ &&ssh-keygen --A -P \"\" ARGMPI_USER=\"user RUNaduser-D \"$[MPI_USER]\" &&usermod-p \"-\" \"$[MPI_USER]\" USER$[MPI_USER] ARGMPI_DIRECTORY=\"home/$[MPLUSER]/mpi\" RUN\ mkdir-p \"$[MPI_DIRECTORY]\" \ &&echo \"cd_\"$[MPI_DIRECTORY]\" >>-/.profile USER root ARGDEFAULT_HOST_FILE=\"/etc/mpi/hosts\" RUN\ dir=$(dirname~$[DEFAULT_HOST_FILE]\");mkdir-p \"$dir\" \ &&touch \"$[DEFAULT_HOST_FILE]\" \ &&chmod 666 \"$[DEFAULT_HOST_FILE]\" WORKXDR/  ARGDEFAULT_HOST_FILE=\"RYDRA_HOST_FILE\" RUN\ echo\"export_$[DEFAULT_HOST_HOST_FILE]\" >>-/etc/profile \ &&echo \"export_HPC_DEFAULT_HOST_FILE=\"$[DEFAULT_HOST_FILE]\" >>-/etc/profile \ &&echo \"export_HPC_MPL_USER=\"$[MPLUSER]\" >>-/etc/profile \ &&echo \"export_HPC_MPL_DIRECTORY=\"$[MPLUSER]\" >>-/etc/profile \ &&echo \"export_HPC_MPL_DIRECTORY=\"$[MPLUSER]\" >>-/etc/profile ENVHC_AUTO_UPDATE_HOSTs=\"new\" EVHC_UPDATE_HOSTs.INTERNAL=\"10\" ENVHC_MODE_MODE_\"worker\" ENVHC_SSH_USER_DEFAULT_KEYs=\"yes\" ENVHC_SSH_USER_DEFAULT_KEYs=\"yes\" ENVHC_SSH_ROOT_DEFAULT_KEYs=\"no\" ENVHC_SSH_ROOT_DEFAULT_KEYs=\"yes ENVHC_SSH_ROOT_DEFAULT_KEYs=\"yes ENVHC_MPLUSER$[MPLUSER]\"
```
ENVHC_MPL_DIRECTORY=$[BASE_DISTRO_TAG]
```
RUNap add --no-cacheopensshdumb-initbind-toolsshadow WORXDR/etc/ssh RUN\ echo \"PasswordAuthentication_no\" >>sshd_config <&&echo \"ChallengeResponseAuthentication_no\" >>sshd_config \ &&echo \"PubkeyAuthentication_yes\" >>ssh_config \ &&echo \"PubkeyAuthentications_yes\" >>ssh_config \ &&echo \"StrictHostKeyChecking_no\" >>ssh_config \ &&ssh-keygen --A -P \"\" ARGMPI_USER=\"user RUNaduser-D \"$0[DEFAULT_HOST_FILE] ENVHC_DEFAULT_HOST_FILE=$[DEFAULT_HOST_FILE]
```  
Listing 10: The Dockerfile file for the Alpine MPICH node image. The image of the control node extends the base image presented in the previous subsection. First, it adds four new packages (line 6):  
* openssh--provides a client and server for remote control via the SSH protocol,
* dumb-init--a program that will serve to launch the main process of the container,
* bind-tools--includes the dig tool for translating host names into IP addresses,shadow--contains tools for managing operating system users. The Hydra process manager, which is used by default in MPICH, utilizes SSH for communication between nodes in the cluster. In this way, it remotely launches distributed programs and supervises their work. In the initial phase, the script adjusts the settings of the SSH client and server (lines 8-15). On the server side, authentication with the system user's password is disabled (option PasswordAuthentication), question-answer authentication (ChallengeResponseAuthentication) is disabled, but public key authentication (PubkeyAuthentication) is enabled. The client is also required to use the public key method for authentication. However, it does not need to verify host keys (StrictHostKeyChecking). Without disabling this function, the SSH client program will terminate with an error, as the fingerprints of future hosts with which it will communicate will not be recorded on the list of known hosts. Generally, this is a desired security feature that prevents connections with computers impersonating other machines, but in this situation, i.e., in a closed, trusted local environment, it does not apply.