nt sets with T vertices are only considered. 9.5.2 Optimal scheduling Pattern When scheduling graph is constructed, we calculate the weight of each vertex as sum data rate of users scheduled in a specified round, that is (9.9) Then the sum of the weight of all vertices in an independent set equals the sum data rate of a possible schedule, that is (9.10) where Vi represents vertex in an independent set. The objective function in (9.8a) is actually equal to the problem maximizing the (9.10), which is the maximum weight independent set problem. The maximum weight sum rate problem then can be transformed as a maximum weight independent set problem. And the optimal schedule can be selected in the Algorithm 9.2: Algorithm 9.2 Optimal scheduling selection. 1: Require: M, K, T, P'm, and hm. 2: Initialize o = 0 3: Construct scheduling graph G 4: Compute w(v), WEGG#0 7: Set O=Ou{v* 8: Set G = G - (( **) 9: Output o 9 Wireless Systems for Distributed Machine Learning here, o is the maximum weight independent set in the graph, which is the schedule pattern corresponding maximum weight sum data rate. J(v) is the sub-graph of G containing vertex V and the vertices adjacent to V, B(v) is the degree of V, which is the number of vertices adjacent to V. Q is the set of vertices where the weight of vertex V is larger than the average weight of J(v). V* is selected by making the average weight of J(v) maximization. 9.5.3 Power Allocation Once the user scheduling is determined, device power can be allocated according to the channel condition to achieve the maximum sum data rate. Power allocation in NOMA has been extensively investigated in the existing works. To achieve the maximum sum data rate under fairness constraints, a similar algorithm to [149] is used here. We notice that the objective function (9.8a) as a logarithmic function of SINR is monotonically increasing. It can be transformed into a product of exponential linear fraction functions. Due to the properties of logarithm function, the optimal power allocation problem for 