Next, we describe the procedure for each iteration \(k = 1, 2, \cdots , K\) . First, \(\alpha , \beta , \gamma \)  denote step-sizes for updating \(x\) , \(y\) , and \(\lambda \)  iterates, respectively. In each iteration, we perform an inner and outer step. First, we perform the inner-level updates, taking one SGD step on each of the inner functions \(g_i\) , \(y_{k+1}^i = y_k^i - \beta h_g^{k, i}\) . Here, we use the stochastic gradient \(h_g^{k, i} \approx \bar{\nabla }_y g_i(x_k, y_k^i)\) . Next, we perform the outer-level updates on \(x_k\)  and \(\lambda _k\) . We take a descent step on \(x_k\)  and an ascent step on \(\lambda _k\)  using the stochastic gradient approximations of the weighted loss, \(h_x^k \approx \hspace{0.83328pt}\overline{\hspace{-0.83328pt}\nabla \hspace{-0.83328pt}}\hspace{0.83328pt}_x F(x_k, y_{k+1}, \lambda _k)\)  and \(h_{\lambda }^k \approx \hspace{0.83328pt}\overline{\hspace{-0.83328pt}\nabla \hspace{-0.83328pt}}\hspace{0.83328pt}_{\lambda } F(x_k, y_{k+1}, \lambda _k)\) . Note that we are considering a constrained setting \(x \in \mathcal {X}\)  and \(\lambda \)  is restricted to be in the simplex, so we also perform projections at each step. These updates are fairly standard in min-max optimization (eg,  [1]}, [2]}). We will formally list our assumptions on \(h_g^{k, i}\) , \(h_x^k, h_{\lambda }^k\)  in Section 5.1.
