Plataforma experimental de prueba Alimama AB Tesla
Implementar varios sistemas para dividir diferentes proporciones de tráfico. El costo es muy alto, hay muy pocos experimentos que se pueden realizar al mismo tiempo y la publicación es engorrosa. Un experimento requiere la cooperación de muchas personas.
BTS puede admitir pruebas ortogonales, como se muestra en la figura: cuando analizamos datos experimentales, solo nos enfocaremos en el grupo de referencia y el grupo experimental dentro del mismo experimento.
Más tarde, con referencia a un artículo de Google, Overlapping Experiment Infrastructure More, Better, and Faster Experimentation implementó una plataforma que puede realizar muchos experimentos e integra análisis y gestión.
Como biblioteca pública, Tesla se puede implantar en aplicaciones de front-end o en motores de back-end para experimentos.
Prueba de una sola capa
Canal de flujo, aislamiento de flujo, un contenedor de flujo se puede imaginar como un ascensor. Se pueden anidar varias capas;
El tráfico reutiliza una capa que fluye a través de ella y se corta cuando fluye a través de la capa. Se pueden anidar varios dominios
Reglas de segmentación del tráfico; , apodo, aleatorio...
Asegura la independencia entre capas y garantiza la coherencia de la página que ven los usuarios.
El experimento real incluye los parámetros del experimento;
El dominio y la capa no se pueden anidar entre sí. En pocas palabras, Tesla distribuye múltiples experimentos en múltiples capas y el tráfico fluye hacia cada capa por turno, realizando así múltiples experimentos en paralelo.
Discreto
Agregar aleatoriedad
A medida que el tráfico fluye a través de cada capa, se agrega un factor discreto para garantizar que fluya hacia la siguiente capa y se divida de nuevo.
Cada vez que se utiliza, se fija en el factor discreto LayerId y el mismo usuario accederá a la misma ruta cada vez.
Supongamos que cada experimento se puede abstraer como un conjunto de parámetros. La combinación de estos parámetros determinará qué experimentos se realizarán en el tráfico actual. Primero consideremos una situación simple: cada experimento no tiene un impacto directo entre sí. Los experimentos se pueden realizar en el mismo tráfico al mismo tiempo, en este caso, el tráfico entrante solo debe asignarse de acuerdo con la proporción requerida por cada experimento. . Al mismo tiempo, debido a que no hay impacto entre experimentos, la misma solicitud puede ejecutar varios experimentos en paralelo al mismo tiempo. En este caso, equivale a tener solo un experimento por capa y el tráfico se asigna en una capa a la proporción de tráfico requerido por el experimento. Como se muestra en la figura, se realizan 3 experimentos en paralelo al mismo tiempo.
En un entorno de producción real, los experimentos a menudo se influyen entre sí. Dos experimentos en el mismo módulo generalmente tienen un impacto. Por ejemplo, dos experimentos se realizan al mismo tiempo. En este caso, no se pueden realizar ambos experimentos simultáneamente ante la misma solicitud. Estos dos o más experimentos que se influyen entre sí deben colocarse al mismo nivel para que cada uno ocupe una cierta proporción de tráfico y no haya reutilización del tráfico entre ellos. Como se muestra en la figura, se puede ver que los experimentos mutuamente excluyentes se colocan en la misma capa para garantizar que no interfieran entre sí.
Considere una situación más compleja. El Experimento 1 en Query Rewrite y el Experimento 2 en Match están acoplados. Una parte del tráfico debe asignarse por separado para el Experimento 1 de Reescritura de consultas y el Experimento 2 de Coincidencia para experimentos conjuntos. En este momento, se refleja la función del Dominio. El tráfico se divide en varios Dominios, uno de los cuales se utiliza específicamente para el experimento conjunto, como se muestra en la figura.
En este punto, Tesla puede admitir casi todas las situaciones experimentales. En comparación con los campos experimentales, Tesla es más flexible y también puede realizar múltiples experimentos en paralelo.
Cuando Tesla implementa las funciones anteriores, considera plenamente los siguientes puntos:
1. Simplicidad: como biblioteca pública, es liviana y proporciona una interfaz simple y práctica que es fácil para el lado de la aplicación a utilizar;
2. Desacoplamiento: el lado de la aplicación solo necesita confiar en Tesla, manteniendo la independencia del sistema y Tesla para reducir la complejidad del sistema
3, Flexible: proporciona una variedad de estrategias de distribución de tráfico flexibles para satisfacer una variedad de aplicaciones y puede proporcionar reglas de segmentación de tráfico personalizadas. También proporciona dominios anidados para satisfacer las necesidades de distribución de tráfico de varios experimentos;
Actualmente; , Tesla solo abre su única interfaz al mundo exterior y su implementación interna es transparente para las aplicaciones. La interfaz es la siguiente:
La aplicación transmite de forma transparente los parámetros experimentales a cada módulo experimental, y cada módulo experimental analiza los parámetros y los ejecuta de forma independiente.
Después de que Tesla reciba la solicitud, dividirá el tráfico según el orden (ID) de la capa para encontrar el experimento correspondiente a la capa. El diagrama de flujo aproximado es el siguiente:
Solo una capa puede. use un desvío, por lo que los pasos de cálculo son los siguientes:
1. Obtenga el valor del parámetro de desvío en req, como una cookie
2. Haga un hash de la estrategia de desvío especificada en Desvío para obtener; el depósito;
3. Según los depósitos especificados por el depósito y todos los experimentos o dominios en la capa, determine en qué experimento o dominio cae la solicitud
4. Si es así; cae en el Experimento, luego devuelva los parámetros del experimento. Si cae en el Dominio, repita los pasos anteriores hasta que el tráfico fluya a través de la última capa.
5. Se pueden deducir otros pasos de cálculo de la capa en el. de la misma manera;
6. Finalmente, empalme el ID del cubo y recopile los parámetros, ID del cubo Es decir, el ID del experimento seleccionado para cada capa. Si no se selecciona ningún experimento, el ID predeterminado es 0 y los ID están conectados. con "_", ejemplo: 100_0_300_2;
Diferentes experimentos tendrán diferentes requisitos de segmentación de tráfico, por lo tanto, Tesla proporciona una variedad de reglas de segmentación para que los usuarios elijan, como se muestra en la tabla.
En teoría, Tesla puede realizar innumerables experimentos en paralelo al mismo tiempo, pero no se recomienda diseñar experimentos tan complejos. Por un lado, el tráfico es limitado, el efecto. fluctuará mucho y la confianza en el efecto experimental es baja. Vale la pena señalar que para garantizar que el tráfico de diferentes capas sea ortogonal, será muy complicado diseñar la función hash y es difícil hacer que la segmentación del tráfico sea simple e interpretable. Por lo tanto, le recomendamos que comprenda de antemano los requisitos de tráfico experimental y los conflictos entre experimentos y que los diseñe de manera razonable.
Cuando el motor back-end está conectado a Tesla, cuando el motor recibe la solicitud, primero solicita a Tesla que obtenga la información experimental correspondiente y luego transmite de forma transparente la información experimental a Query Rewrite y Rank Get. los parámetros experimentales requeridos y, finalmente, registre el ID del depósito en el campo correspondiente del registro de entrega para las estadísticas del efecto experimental.
Para verificar el papel de Tesla, se diseñaron experimentos más complejos y se diseñaron múltiples experimentos de algoritmos para escenarios de búsqueda y navegación en caliente, como se muestra en la figura. En el módulo Query Rewrite, para determinar qué parámetro de diversidad funciona mejor, diseñamos tres experimentos paralelos. En el módulo Rank, para verificar la diversidad de resultados y la estrategia de ranking, también diseñamos tres experimentos paralelos.
Realizar 12 experimentos en paralelo al mismo tiempo ya es muy complicado. Tesla puede evitar eficazmente el impacto de los conflictos entre experimentos en los resultados experimentales.
Literatura ampliada: