package org.nd4j.parameterserver.distributed.conf; import lombok.*; import lombok.extern.slf4j.Slf4j; import org.nd4j.linalg.exception.ND4JIllegalStateException; import org.nd4j.parameterserver.distributed.enums.ExecutionMode; import org.nd4j.parameterserver.distributed.enums.FaultToleranceStrategy; import org.nd4j.parameterserver.distributed.enums.NodeRole; import java.io.Serializable; import java.util.ArrayList; import java.util.List; /** * Basic configuration pojo for VoidParameterServer * @author raver119@gmail.com */ @NoArgsConstructor @AllArgsConstructor @Builder @Slf4j @Data public class VoidConfiguration implements Serializable { private int streamId; private int unicastPort; private int multicastPort; private int numberOfShards; private FaultToleranceStrategy faultToleranceStrategy; private ExecutionMode executionMode; private List<String> shardAddresses = new ArrayList<>(); private List<String> backupAddresses = new ArrayList<>(); // this is very important parameter private String networkMask; // This two values are optional, and have effect only for MulticastTransport private String multicastNetwork; private String multicastInterface; private int ttl; protected NodeRole forcedRole; // FIXME: probably worth moving somewhere else // this part is specific to w2v private boolean useHS = true; private boolean useNS = false; private long retransmitTimeout; private long responseTimeframe; private long responseTimeout; public void setStreamId(int streamId) { if (streamId < 1) throw new ND4JIllegalStateException("You can't use streamId 0, please specify other one"); this.streamId = streamId; } public void setShardAddresses(List<String> addresses) { this.shardAddresses = addresses; } public void setShardAddresses(String... Ips) { shardAddresses = new ArrayList<>(); for (String ip : Ips) { if (ip != null) shardAddresses.add(ip); } } public void setBackupAddresses(List<String> addresses) { this.backupAddresses = addresses; } public void setBackupAddresses(String... Ips) { backupAddresses = new ArrayList<>(); for (String ip : Ips) { if (ip != null) backupAddresses.add(ip); } } public void setExecutionMode(@NonNull ExecutionMode executionMode) { this.executionMode = executionMode; } public static class VoidConfigurationBuilder { private String multicastNetwork = "224.0.1.1"; private int ttl = 4; private int streamId = 119; private int unicastPort = 49876; private int multicastPort = 59876; private int numberOfShards = 1; private FaultToleranceStrategy faultToleranceStrategy = FaultToleranceStrategy.NONE; private ExecutionMode executionMode = ExecutionMode.DISTRIBUTED; private long retransmitTimeout = 1000; private long responseTimeframe = 500; private long responseTimeout = 30000; } }