¿Se pregunta cómo funciona MLGO? Después de leer este artículo, entenderás

En el mundo actual del desarrollo de software, la optimización del código es fundamental para mejorar el rendimiento y reducir el tamaño del código. En este sentido, la inserción se considera una de las técnicas de optimización clave. MLGO, por otro lado, puede tomar decisiones en línea/no en línea de manera inteligente durante la compilación, proporcionando un código más eficiente y compacto. Este artículo profundizará en cómo funciona MLGO, brindándole una comprensión completa de esta emocionante tecnología.

3f6805ef78ab291204b0403ebcf5a7ad.jpeg

La inserción es una técnica de optimización destinada a reducir el tamaño del código eliminando el código redundante. Cuando hay una gran cantidad de funciones que se llaman entre sí en el código, se forma una estructura llamada gráfico de llamadas (Call graph). En la fase de inserción, el compilador recorre todo el gráfico de llamadas y decide si colocar en línea ciertos pares de llamador-llamado de acuerdo con ciertas reglas de decisión. Este es un proceso de decisión continuo, ya que las decisiones de alineación anteriores cambian el gráfico de llamadas, lo que afecta las decisiones posteriores y el resultado final. Al incorporar pares de llamador-llamado, el compilador puede generar un código más conciso, reduciendo así el tamaño del código.

Sin embargo, en los métodos heurísticos tradicionales, la decisión de incluir/no incluir generalmente se basa en algunas reglas empíricas o reglas heurísticas. Este enfoque se ha vuelto cada vez más difícil de mejorar con el tiempo, especialmente cuando se enfrenta a estructuras de código complejas y paquetes de software a gran escala. Para resolver este problema, MLGO (Optimización guiada por aprendizaje automático) introduce modelos de aprendizaje automático para reemplazar los métodos heurísticos tradicionales. MLGO entrena la red de decisiones con aprendizaje de refuerzo utilizando gradiente de políticas y algoritmos de estrategia evolutiva para proporcionar sugerencias de decisiones en línea y no en línea.

f57aeefdf57bdf80696df7fd6f7b3318.jpeg

En MLGO, el compilador le pregunta al modelo de red neuronal si debe alinear un par particular de llamador-llamado extrayendo características relevantes como entrada durante el recorrido del gráfico de llamadas. De acuerdo con la sugerencia del modelo, el compilador toma decisiones en línea/no en línea a su vez hasta que se haya recorrido todo el gráfico de llamadas. Este proceso iterativo de toma de decisiones recopilará registros de estados, acciones y recompensas, y mejorará continuamente la política y actualizará el modelo en forma de aprendizaje por refuerzo en línea (aprendizaje por refuerzo en línea).

Durante el entrenamiento, el compilador usa la política entrenada para tomar decisiones en línea/no en línea y mantiene un registro del proceso de decisión secuencial. Estos registros luego se pasan al entrenador para actualizar el modelo de red neuronal. Este proceso de entrenamiento se itera hasta que se obtiene un modelo satisfactorio.

d236ada0c068448c83034f258359ee32.jpeg

Una vez completada la capacitación, la política entrenada se integra en el compilador para proporcionar decisiones en línea/no en línea durante el proceso de compilación real. A diferencia de la fase de entrenamiento, esta política ya no genera registros. Al incorporar el modelo TensorFlow en XLA AOT (compilación anticipada), el modelo se puede convertir en código ejecutable, lo que evita las dependencias del tiempo de ejecución de TensorFlow y el tiempo adicional y la sobrecarga de memoria.

Los experimentos en grandes paquetes de software internos muestran que las políticas en línea entrenadas con MLGO se pueden generalizar para su uso en el proceso de compilación de otro software y reducir el tiempo y la sobrecarga de memoria entre un 3 % y un 7 %. Esta generalidad se aplica no solo a las comparaciones entre software diferente, sino también a lo largo del tiempo en el desarrollo continuo de software y compiladores. Después de tres meses de evaluación, el modelo mostró solo una ligera degradación en el rendimiento en el mismo conjunto de software.

Con el avance y desarrollo continuos de la tecnología de aprendizaje automático, podemos esperar que MLGO promueva aún más la innovación en el campo de la optimización de código en el futuro, brindándonos un software más eficiente y confiable.

Supongo que te gusta

Origin blog.csdn.net/Fsafn/article/details/131679567
Recomendado
Clasificación