We start the evolution from a given initial instruction dataset \(D^{(0)}=\left(I_{k}^{(0)},R_{k}^{(0)}\right)_{1\leq k\leq N}\), where \(I_{k}^{(0)}\) is the \(k\)-th instruction in \(D^{(0)}\), \(R_{k}^{(0)}\) is the corresponding response for the \(k\)-th instruction, and \(N\) is the number of samples in \(D^{(0)}\). In each evolution, we upgrade all the \(I^{(t)}\) in \(D^{(t)}\) to \(I^{(t+1)}\) by applying a LLM instruction evolution prompt, and then use the LLM to generate corresponding responses \(R^{t+1}\) for the newly evolved \(I^{t+1}\). Thus, we obtain an evolved instruction dataset \(D^{t+1}\). By iteratively performing \(M\) evolutions, we can sequentially obtain \(M\) evolution datasets \([D^{(1)}\cdots D^{(M)}]\). Our work focuses on open-domain instruction data, where instructions have varying inputs and tasks without a clear distinction between the instruction part and the input.