Skip to content

Commit

Permalink
Merge branch 'main' into mv-conns
Browse files Browse the repository at this point in the history
  • Loading branch information
panh99 authored Sep 19, 2024
2 parents 2cc3ead + 02e1813 commit 13d974e
Show file tree
Hide file tree
Showing 23 changed files with 360 additions and 119 deletions.
2 changes: 1 addition & 1 deletion examples/quickstart-mlx/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,4 +67,4 @@ flwr run . --run-config "num-server-rounds=5 learning-rate=0.05"
### Run with the Deployment Engine

> \[!NOTE\]
> An update to this example will show how to run this Flower project with the Deployment Engine and TLS certificates, or with Docker.
> An update to this example will show how to run this Flower project with the Deployment Engine and TLS certificates.
25 changes: 25 additions & 0 deletions src/proto/flwr/proto/control.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// Copyright 2024 Flower Labs GmbH. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ==============================================================================

syntax = "proto3";

package flwr.proto;

import "flwr/proto/run.proto";

service Control {
// Request to create a new run
rpc CreateRun(CreateRunRequest) returns (CreateRunResponse) {}
}
10 changes: 0 additions & 10 deletions src/proto/flwr/proto/driver.proto
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import "flwr/proto/node.proto";
import "flwr/proto/task.proto";
import "flwr/proto/run.proto";
import "flwr/proto/fab.proto";
import "flwr/proto/transport.proto";

service Driver {
// Request run_id
Expand All @@ -43,15 +42,6 @@ service Driver {
rpc GetFab(GetFabRequest) returns (GetFabResponse) {}
}

// CreateRun
message CreateRunRequest {
string fab_id = 1;
string fab_version = 2;
map<string, Scalar> override_config = 3;
Fab fab = 4;
}
message CreateRunResponse { uint64 run_id = 1; }

// GetNodes messages
message GetNodesRequest { uint64 run_id = 1; }
message GetNodesResponse { repeated Node nodes = 1; }
Expand Down
12 changes: 12 additions & 0 deletions src/proto/flwr/proto/run.proto
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ syntax = "proto3";

package flwr.proto;

import "flwr/proto/fab.proto";
import "flwr/proto/transport.proto";

message Run {
Expand All @@ -26,5 +27,16 @@ message Run {
map<string, Scalar> override_config = 4;
string fab_hash = 5;
}

// CreateRun
message CreateRunRequest {
string fab_id = 1;
string fab_version = 2;
map<string, Scalar> override_config = 3;
Fab fab = 4;
}
message CreateRunResponse { uint64 run_id = 1; }

// GetRun
message GetRunRequest { uint64 run_id = 1; }
message GetRunResponse { Run run = 1; }
2 changes: 1 addition & 1 deletion src/py/flwr/cli/new/new.py
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ def new(
)
)

_add = " huggingface-cli login\n" if framework_str == "flowertune" else ""
_add = " huggingface-cli login\n" if llm_challenge_str else ""
print(
typer.style(
f" cd {package_name}\n" + " pip install -e .\n" + _add + " flwr run\n",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ dependencies = [
"transformers==4.39.3",
"sentencepiece==0.2.0",
"omegaconf==2.3.0",
"hf_transfer==0.1.8",
]

[tool.hatch.build.targets.wheel]
Expand Down
27 changes: 27 additions & 0 deletions src/py/flwr/proto/control_pb2.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions src/py/flwr/proto/control_pb2.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
"""
@generated by mypy-protobuf. Do not edit manually!
isort:skip_file
"""
import google.protobuf.descriptor

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
67 changes: 67 additions & 0 deletions src/py/flwr/proto/control_pb2_grpc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc

from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2


class ControlStub(object):
"""Missing associated documentation comment in .proto file."""

def __init__(self, channel):
"""Constructor.
Args:
channel: A grpc.Channel.
"""
self.CreateRun = channel.unary_unary(
'/flwr.proto.Control/CreateRun',
request_serializer=flwr_dot_proto_dot_run__pb2.CreateRunRequest.SerializeToString,
response_deserializer=flwr_dot_proto_dot_run__pb2.CreateRunResponse.FromString,
)


class ControlServicer(object):
"""Missing associated documentation comment in .proto file."""

def CreateRun(self, request, context):
"""Request to create a new run
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')


def add_ControlServicer_to_server(servicer, server):
rpc_method_handlers = {
'CreateRun': grpc.unary_unary_rpc_method_handler(
servicer.CreateRun,
request_deserializer=flwr_dot_proto_dot_run__pb2.CreateRunRequest.FromString,
response_serializer=flwr_dot_proto_dot_run__pb2.CreateRunResponse.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
'flwr.proto.Control', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))


# This class is part of an EXPERIMENTAL API.
class Control(object):
"""Missing associated documentation comment in .proto file."""

@staticmethod
def CreateRun(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/flwr.proto.Control/CreateRun',
flwr_dot_proto_dot_run__pb2.CreateRunRequest.SerializeToString,
flwr_dot_proto_dot_run__pb2.CreateRunResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
27 changes: 27 additions & 0 deletions src/py/flwr/proto/control_pb2_grpc.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
"""
@generated by mypy-protobuf. Do not edit manually!
isort:skip_file
"""
import abc
import flwr.proto.run_pb2
import grpc

class ControlStub:
def __init__(self, channel: grpc.Channel) -> None: ...
CreateRun: grpc.UnaryUnaryMultiCallable[
flwr.proto.run_pb2.CreateRunRequest,
flwr.proto.run_pb2.CreateRunResponse]
"""Request to create a new run"""


class ControlServicer(metaclass=abc.ABCMeta):
@abc.abstractmethod
def CreateRun(self,
request: flwr.proto.run_pb2.CreateRunRequest,
context: grpc.ServicerContext,
) -> flwr.proto.run_pb2.CreateRunResponse:
"""Request to create a new run"""
pass


def add_ControlServicer_to_server(servicer: ControlServicer, server: grpc.Server) -> None: ...
39 changes: 15 additions & 24 deletions src/py/flwr/proto/driver_pb2.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

52 changes: 0 additions & 52 deletions src/py/flwr/proto/driver_pb2.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@
isort:skip_file
"""
import builtins
import flwr.proto.fab_pb2
import flwr.proto.node_pb2
import flwr.proto.task_pb2
import flwr.proto.transport_pb2
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
Expand All @@ -15,56 +13,6 @@ import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class CreateRunRequest(google.protobuf.message.Message):
"""CreateRun"""
DESCRIPTOR: google.protobuf.descriptor.Descriptor
class OverrideConfigEntry(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor
KEY_FIELD_NUMBER: builtins.int
VALUE_FIELD_NUMBER: builtins.int
key: typing.Text
@property
def value(self) -> flwr.proto.transport_pb2.Scalar: ...
def __init__(self,
*,
key: typing.Text = ...,
value: typing.Optional[flwr.proto.transport_pb2.Scalar] = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...

FAB_ID_FIELD_NUMBER: builtins.int
FAB_VERSION_FIELD_NUMBER: builtins.int
OVERRIDE_CONFIG_FIELD_NUMBER: builtins.int
FAB_FIELD_NUMBER: builtins.int
fab_id: typing.Text
fab_version: typing.Text
@property
def override_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ...
@property
def fab(self) -> flwr.proto.fab_pb2.Fab: ...
def __init__(self,
*,
fab_id: typing.Text = ...,
fab_version: typing.Text = ...,
override_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ...,
fab: typing.Optional[flwr.proto.fab_pb2.Fab] = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["fab",b"fab"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["fab",b"fab","fab_id",b"fab_id","fab_version",b"fab_version","override_config",b"override_config"]) -> None: ...
global___CreateRunRequest = CreateRunRequest

class CreateRunResponse(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor
RUN_ID_FIELD_NUMBER: builtins.int
run_id: builtins.int
def __init__(self,
*,
run_id: builtins.int = ...,
) -> None: ...
def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id"]) -> None: ...
global___CreateRunResponse = CreateRunResponse

class GetNodesRequest(google.protobuf.message.Message):
"""GetNodes messages"""
DESCRIPTOR: google.protobuf.descriptor.Descriptor
Expand Down
12 changes: 6 additions & 6 deletions src/py/flwr/proto/driver_pb2_grpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ def __init__(self, channel):
"""
self.CreateRun = channel.unary_unary(
'/flwr.proto.Driver/CreateRun',
request_serializer=flwr_dot_proto_dot_driver__pb2.CreateRunRequest.SerializeToString,
response_deserializer=flwr_dot_proto_dot_driver__pb2.CreateRunResponse.FromString,
request_serializer=flwr_dot_proto_dot_run__pb2.CreateRunRequest.SerializeToString,
response_deserializer=flwr_dot_proto_dot_run__pb2.CreateRunResponse.FromString,
)
self.GetNodes = channel.unary_unary(
'/flwr.proto.Driver/GetNodes',
Expand Down Expand Up @@ -98,8 +98,8 @@ def add_DriverServicer_to_server(servicer, server):
rpc_method_handlers = {
'CreateRun': grpc.unary_unary_rpc_method_handler(
servicer.CreateRun,
request_deserializer=flwr_dot_proto_dot_driver__pb2.CreateRunRequest.FromString,
response_serializer=flwr_dot_proto_dot_driver__pb2.CreateRunResponse.SerializeToString,
request_deserializer=flwr_dot_proto_dot_run__pb2.CreateRunRequest.FromString,
response_serializer=flwr_dot_proto_dot_run__pb2.CreateRunResponse.SerializeToString,
),
'GetNodes': grpc.unary_unary_rpc_method_handler(
servicer.GetNodes,
Expand Down Expand Up @@ -148,8 +148,8 @@ def CreateRun(request,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/flwr.proto.Driver/CreateRun',
flwr_dot_proto_dot_driver__pb2.CreateRunRequest.SerializeToString,
flwr_dot_proto_dot_driver__pb2.CreateRunResponse.FromString,
flwr_dot_proto_dot_run__pb2.CreateRunRequest.SerializeToString,
flwr_dot_proto_dot_run__pb2.CreateRunResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

Expand Down
Loading

0 comments on commit 13d974e

Please sign in to comment.