Deux capitaines de "Digital Breakthrough - 2020", ou Résolvez une affaire en quelques heures

image



Avec vous dans les espaces ouverts de Habr, deux capitaines des équipes d'employés de Rosneft ont participé à la finale du marathon informatique Digital Breakthrough 2020 et ne peuvent pas rester silencieux à ce sujet.



Rosneft n'est pas indifférent aux événements informatiques. Pourquoi, l'entreprise elle-même génère annuellement des hackathons et des défis ( https://rn.digital/it2020 ) afin de secouer la communauté informatique pour résoudre ses problèmes urgents. Cependant, les employés ne sont pas censés participer aux propres hackathons-marathons de Rosneft - ce n'est pas éthique par rapport aux participants extérieurs. Mais eux, les développeurs et les programmeurs de logiciels d'entreprise à forte intensité scientifique, veulent se mesurer à la force héroïque!



Par conséquent, la participation des employés de Rosneft à divers hackathons est une sorte de maintien de l'équipe en état de combat, source d'inspiration et d'idées, encourageant le développement d'approches non standard des tâches informatiques. L'essentiel n'est pas au détriment du travail principal, mais c'est déjà une évidence. Le leader pétrolier se concentre sur la numérisation des processus commerciaux et la substitution des importations de technologies de l'information dans le domaine de la production pétrolière et gazière, et par conséquent, la présence d'un esprit de concurrence parmi les employés de l'entreprise et la volonté de rivaliser avec le reste du monde sont considérées comme une bonne forme.



Dans cet article, les employés de RN-BashNIPIneft, Chingiz Akhmetov et Maya Bikmetova, raconteront en couleur le chemin de leurs équipes vers la finale d'un événement informatique cool, partageront des idées et des astuces de vie.



Chingiz Akhmetov et l'équipe "Inn BTG"



Présentons-nous d'abord. «Inn BTG» est: «Innovant. Brillamment. Technologiquement. Grandement ". Il s'agit également de Vladimir Ryzhikov, Radmir Karimov et Murad Musin et Chingiz Akhmetov.



Il y a un peu plus d'un an, lorsque l'une des étapes du hackathon Digital Breakthrough - 2019 s'est déroulée dans notre Ufa natale, nous avons formé une équipe pour y participer et nous nous sommes impliqués dans la résolution du problème. À ce moment mémorable, nous avons atteint la finale, qui s'est déroulée à Kazan! Malheureusement, toute notre équipe n'a pas réussi à assister à l'événement à ce moment-là. Par conséquent, en mode d'urgence, les restes de l'équipe ont dû former un nouveau «gang» des mêmes renégats venus d'autres villes (notre Oufa a été rejoint par Cherepovets et Saint-Pétersbourg). En finale, malheureusement, nous n'avons pas réussi à gagner ni même à obtenir une nomination. Par conséquent, à partir du hackathon de l'année dernière, nous n'avons que des produits dérivés sous la forme de beaux sweatshirts lumineux avec les symboles de la compétition et une gestalt découverte pour gagner la finale ...



À cet égard, en 2020, deux semaines avant le début du hub informatique Ural du marathon Digital Breakthrough - 2020, une décision volontaire a été prise de créer une nouvelle équipe pour une victoire brillante et inconditionnelle, d'abord au niveau régional, puis dans l'étape finale de la compétition.



Comme l'année dernière, le backbone (3 combattants) a été formé par des collègues d'un département de notre institut scientifique et de conception, qui développent actuellement un progiciel de modélisation géologique des champs pétrolifères "RN-GEOSIM". Aussi, pour la fiabilité, l'équipe a été reconstituée avec un employé de banque, mais pas pour des prêts et des hypothèques, mais comme il est notre ami d'un ancien banc d'étudiant et qu'il connaît son entreprise. Ainsi, il était possible de collecter un "quatre fantastiques", où chaque participant avait de l'expérience dans certains domaines de la programmation, était en quelque sorte un expert.



image

Capture d'écran de l'émission lors de l'annonce des gagnants.



En tant que participants expérimentés, nous aimerions constater une augmentation du niveau de l'organisation du hackathon par rapport au passé. Cette année, il y a plus de tâches, et elles sont plus diversifiées, par exemple, des tâches sont apparues non seulement pour les services Web. Cette fois, le hackathon se déroule en ligne, ce qui a beaucoup facilité la vie des participants et a permis d'économiser sur les frais de transport. Des actualités majeures, des interviews de personnes intéressantes, divers concours et quiz sont diffusés sur la chaîne YouTube. Les informations destinées aux participants sont publiées sur les chaînes Telegram. Dans le chat Telegram principal de la compétition, il y a une communication avec le support sur des questions générales, les réponses viennent immédiatement. Il existe également un canal pour trouver des membres et des équipes. Discord a été choisi pour la communication au sein de l'équipe (il a également été utilisé pour la communication avec les experts en cas aux points de contrôle). En un mot, tout est pour les gens!



Séparément, nous voulons mettre un "plus" pour le fait qu'il n'y a plus de lien rigide avec la région: notre équipe est d'Ufa, mais nous étions occupés à un moment et n'avons pas pu participer au Volga Hub, mais nous avons pu concourir dans l'Oural. J'ai été ravi que les enregistrements de toutes les diffusions et les protections de streaming soient publiés sur la chaîne YouTube. Transparent et informatif.



Notre équipe a choisi de participer à la solution du cas «Route cyclable» du Département de l'informatisation de la région de Tioumen: «Développement d'un logiciel qui permet d'analyser le placement initial des passages pour piétons, des pistes cyclables et la marche et le vélo réels des habitants de la ville». Non pas que nous soyons de si grands fans. Cette tâche a été choisie car elle a été décrite de manière très détaillée dans l'interview du titulaire du cas ( https://www.youtube.com/watch?v=hLPGCZ-5HRc ), et l'objectif principal était d'obtenir une technique, un algorithme. C'est exactement notre sujet.



image

Les équipes ont priorisé les cas avant le début. Le rapport final du nombre d'équipes par cas au Hub de l'Oural est devenu visible après le départ.



Nous avons compris qu'il est très important de choisir les outils qui permettront de faire MVP (Minimum Viable Product, ou à notre avis «un produit avec des fonctions minimales, mais suffisantes pour satisfaire les premiers consommateurs») de la manière la plus rapide. Pour nous, ce sont Python avec ses bibliothèques NetworkX (pour travailler avec des graphiques) et OSMnx (pour représenter les données OpenStreetMap sous forme de graphique). Les performances d'une telle solution laissent beaucoup à désirer, car Python lui-même est lent et NetworkX ne disposait pas d'algorithmes spécialisés pour travailler avec des graphiques routiers. Dans notre prototype, le temps de fonctionnement pour un clustering assez petit a atteint des dizaines de minutes. Il est clair qu'un tel délai est inacceptable pour l'utilisateur, mais nous avons montré que l'idée fonctionne. À l'avenir, nous considéronsil est préférable de réécrire le noyau de calcul dans un langage compilé en utilisant des algorithmes spécialisés avec parallélisation.



L'essence brève de notre algorithme est que la ville entière (le schéma de l'algorithme, à gauche, en haut) est regroupée en sections. Dans chaque section, le degré de demande de pistes cyclables est déterminé (schéma de l'algorithme, à droite, en haut). Le graphique routier est filtré, ne laissant que les routes sur lesquelles des pistes cyclables peuvent être construites. Ensuite, le graphique filtré est comparé au cluster, et seules les routes qui tombent dans les sections demandées du cluster sont laissées (l'algorithme fonctionne, à gauche, en bas). Les îles résultantes sont reliées par l'algorithme des chemins les plus courts afin que le système de pistes cyclables soit connecté, c'est-à-dire que le cycliste puisse voyager d'une zone à une autre (le schéma de l'algorithme, à droite, en bas).



image

Le schéma de l'algorithme.



Nous avons été divisés en sous-tâches: l'un a fait la partie calcul, le second a mis en place le serveur, le troisième a fait la visualisation sur la page Web, le quatrième a fait la vue du bureau. Nous avons réussi à presque tout accomplir. Nous avons décidé de transférer entièrement le graphique résultant vers le client et de dessiner via OpenLayers, bien qu'il serait probablement préférable de déployer notre propre serveur de tuiles.



image

Conception du schéma MVP (sous-optimal).



Résultats finaux



Lors de la finale du concours Digital Breakthrough, nous avons reçu un cas du ministère de l'Énergie «Développement d'un système de modélisation de la dépendance de la consommation d'électricité et des indicateurs économiques de la Fédération de Russie par territoires et industries». Par rapport à l'étape régionale, la finale était plus ambitieuse: le nombre de cas a augmenté (15 contre 9), le nombre d'équipes dans un cas (26 contre 10). Le fonds des prix pour les gagnants a également augmenté, les chiffres exacts peuvent être consultés sur le site Web https://leadersofdigital.ru .



En travaillant sur la tâche et en suivant les résultats des consultations avec les porteurs de cas, nous avons décidé de mettre en œuvre le projet dans un Jupyter Notebook en Python, et d'utiliser l'économétrie pour la modélisation. La variable dépendante du modèle était le volume réel de consommation d'énergie, et la variable indépendante était le volume de l'exploitation minière et de la fabrication. La prévision de la variable dépendante a été réalisée selon l'algorithme suivant:



1. La production industrielle est prévue (une tendance linéaire est construite):

a. La section du graphique est mise en surbrillance, utilisée pour calculer les coefficients de tendance.

b. Les coefficients de tendance linéaire sont déterminés par la méthode des moindres carrés.

2. Un modèle de dépendance de l'évolution de la consommation électrique sur le volume de la production industrielle est construit



image



3. Le volume de la consommation énergétique est prédite à l'aide du modèle construit et de la modélisation par la méthode SARIMA (l'article https://habr.com/ru/company/ods/blog/327242/ nous a beaucoup aidé. ).



image

Résultats des prévisions restantes.



Malheureusement, l'approche choisie était légèrement en deçà des trois premiers et nous avons pris la 22e place. Participerons-nous à des hackathons similaires à l'avenir? Bien sûr! La résolution de tâches non liées au travail vous permet de regarder les tâches de travail avec un œil neuf plus tard.



Maya Bikmetova et "NEII"



Quelques semaines avant Digital Breakthrough 2020, j'ai participé à un autre hackathon plus petit et mon équipe a pris la première place. Cela a probablement influencé la décision de s'essayer à la compétition panrusse.



J'ai invité mes collègues et amis Marina Semyonova, Guzel et Nail Akmurzin à rejoindre l'équipe, car il est beaucoup plus facile de travailler dans la pression du temps avec des amis que je connais. Cela ne perd pas de temps et les 30 à 36 heures du hackathon peuvent être consacrées au développement et à la création d'un MVP. Nous sommes entrés dans le Volga IT Hub of Digital Breakthrough - 2020 en tant qu'équipe NEII. Ce nom est avec nous depuis longtemps. Nous pensons qu'il reflète le mieux notre essence: les employés d'un institut de recherche engagés dans le développement de systèmes basés sur l'intelligence artificielle (IA).



Comme mes collègues (et ce sont des concurrents) l'ont déjà écrit ci-dessus, en raison de la situation épidémiologique complexe, le hackathon s'est déroulé en ligne. Nous avons eu trois points de contrôle au cours desquels nous avons discuté avec le modérateur, l'expert technique et le représentant du titulaire du cas. Ils ont écouté nos idées, donné des conseils, observé ce que nous avons fait et évalué notre présentation.



Toutes les équipes ont reçu une liste de 10 cas. Lors de l'inscription, nous avons priorisé. Et l'un des cas les plus prioritaires pour l'équipe était d'aller la voir au hackathon. En outre, chaque cas contenait une description générale du problème, et une description détaillée n'a été donnée qu'au début du concours. Nous avons eu un cas où il était nécessaire de développer un système intelligent pour automatiser l'information et fournir des avantages sociaux à la population. Le client de cette affaire était le Ministère de la politique sociale, démographique et familiale de la région de Samara.



image

Le schéma général de la solution développée.



Nous avons également discuté sur Discord pour discuter des tâches. Ensemble, ils ont lancé des idées de solutions, distribué qui ferait quoi. Marina était responsable de la logique du serveur - le backend et la base de données, Guzel - pour la présentation, et Nail pour le frontend. J'ai pris en charge le développement d'un modèle de machine learning, la gestion d'équipe et la communication avec le porteur de cas.



Suite à cette tâche, nous avons implémenté des prototypes de deux systèmes.



1. Une application web sous la forme d'un chat bot pour informer la population sur les bénéfices.



Dans la partie client, le citoyen décrit sa situation de vie. La requête résultante est envoyée au service NLP, qui est responsable du traitement du langage naturel. Sous le capot, la catégorie de la demande de l'utilisateur est déterminée à l'aide de méthodes d'apprentissage automatique. En d'autres termes, le problème de la classification des textes est en train d'être résolu. Les prévisions PNL du modèle sont envoyées à la base de données. À partir de la base de données, la clé renvoie les informations nécessaires sur les avantages attendus et est à nouveau fournie au client.



image

Le script backend principal accède au service NLP et à la base de données.



Dans la boîte de dialogue, l'utilisateur voit à quels avantages il a droit, quels documents doivent être collectés.



image

Capture d'écran d'un prototype de chatbot pour informer la population des avantages.



2. Service de vérification de la mise à jour des actes normatifs et législatifs.



Au cours de la communication avec un représentant du titulaire du dossier, il s'est avéré que la grande douleur des travailleurs de la protection sociale est la nécessité de revoir régulièrement de nombreux documents réglementaires afin d'identifier rapidement les changements de législation. S'il y a des changements, l'employé met à jour la base de données locale. Naturellement, cela prend beaucoup de temps et d'efforts, et les employés ont moins de temps pour travailler directement avec les gens. Nous sommes convaincus qu'un tel travail de routine peut et doit être automatisé.



Comme première approximation pour résoudre ce problème, nous avons proposé un service qui compare régulièrement les documents de la base de données locale de la sécurité sociale avec les mêmes documents de la base de données d'un service en ligne, par exemple "Consultant Plus". S'il détecte des différences dans les documents, le service envoie une notification à l'assistant de sécurité sociale comme «Il y a eu des changements dans le document X. Actualisez votre base de données locale. " Ainsi, l'agent de sécurité sociale est libéré de la nécessité de pelleter un tas de documents. La machine détectera les changements de lois pour lui / elle pendant qu'il / elle travaille avec les citoyens.



Si nous parlons de l'aspect technique du problème, comme base de référence pour résoudre le problème de la comparaison de textes, nous avons utilisé l'approche classique souvent utilisée dans la recherche d'informations - représentant des documents sous la forme de vecteurs numériques avec une estimation ultérieure de la distance cosinus entre eux.



image

Formule de calcul de la distance cosinus entre les vecteurs de deux documents.



Et maintenant, quelques hacks de survie hackathon. Nous vous recommandons au tout début d'approuver la liste et les versions des bibliothèques avec lesquelles vous allez travailler. Cela évitera les situations où le projet n'est pas généré en raison de conflits de version et que vous devez soumettre votre code pour examen en 10 minutes. D'ailleurs, il vaut mieux poster des liens vers la présentation et la solution une demi-heure avant la fin du concours, et ne pas le laisser jusqu'au dernier moment. Lors du hackathon, les gens étaient vraiment nerveux à propos d'un site qui s'est écrasé cinq minutes avant la livraison finale de l'ensemble du projet ...



image

Technologies utilisées: vive l'open source! L'essentiel est de garder une trace des versions des frameworks.



D'une part, un hackathon est un concours de spécialistes techniques, et le jury évalue le code: lisibilité, opérabilité, architecture de la solution, documentation. D'un autre côté, il y a un porteur de cas, et ses représentants sont loin du monde informatique. Ils apprécient tout d'abord la beauté, la cohérence et la clarté de la présentation, du design de l'interface. En d'autres termes, il est préférable d'avoir une personne dans l'équipe qui ne s'occupera que de la présentation, celle qui, avec son aide, «vendra» la solution au titulaire du dossier.



Résultats finaux



Malheureusement, il n'y a pas eu le temps de se préparer pour la finale de Digital Breakthrough - 2020. Traditionnellement, il y a plus de travail d'ici la fin de l'année. Nous nous sommes donc appuyés sur la chance et les uns sur les autres!

Lors de la finale du hackathon, nous étions dans le même line-up. Cette fois, nous sommes tombés sur un cas de Sberbank: la tâche est de créer une solution qui aiderait à accélérer le travail avec le courrier. Cela s'est avéré être un gros problème, car les cadres supérieurs doivent trier 2000 e-mails par jour, ce qui prend au moins 3 heures!



Au premier point de contrôle, on nous a dit que les développeurs de la Sberbank se demandaient depuis longtemps ce problème, mais qu'ils n'avaient pas encore trouvé de solution concrète - ils avaient besoin d'une idée qui les aiderait enfin à arriver à quelque chose.



Et nous avons commencé à réfléchir. En 2 heures, nous avons généré de nombreuses idées intéressantes différentes (c'était la partie la plus créative du hackathon, puisque l'une suggérait, l'autre complétée, et cette idée s'est transformée en un outil parfait qui remplacerait l'email régulier = D).



En conséquence, nous avons conçu l'implémentation de notre propre client de messagerie "Sber-secrétaire", qui transformerait la correspondance en chat, les chats seraient regroupés par sujet dans des dossiers, et le système déterminerait automatiquement l'importance de la correspondance (chat). Dans le chat, vous pourriez écouter des messages non lus, les textes des messages pourraient être dictés, une nouvelle lettre serait créée avec une commande vocale, et au lieu d'une correspondance dans la fenêtre principale, au lieu d'une correspondance, de 1 à 4 pourraient être affichés, et quelques fonctionnalités supplémentaires supplémentaires.



image

Mise en page de l'interface client de messagerie



Ensuite, nous avons attribué des responsabilités: j'étais en charge du côté serveur du projet, Nail était en charge du côté client, Marina a développé la conception dans figma et Guzel a fait une belle et vaste présentation et s'est préparé pour la défense.



Nous savions tout de suite que nous n'aurions pas le temps de faire une application fonctionnelle, mais nous espérions qu'au moins la partie client mûrirait. Il y a eu beaucoup de travail, et en conséquence, nous avons montré dans figma quelles fonctionnalités aurait notre client de messagerie, décrit l'architecture du projet, nommé un certain nombre d'avantages d'une telle solution, par rapport à Outlook, le coût du projet et les étapes de mise en œuvre.



Je pense que nous pouvons dire que le jury a aimé notre décision, car lors d'un des points de contrôle, les trackers ont montré que nous allions dans la bonne direction. Nous n'avons pas réussi à faire une application fonctionnelle, mais sommes entrés dans le top 5 (5e place) sur 11 équipes. Que signifie pour nous la 5e place? Cela signifie que nous avons la possibilité de montrer le meilleur résultat la prochaine fois!



Si vous avez également participé à la "Percée numérique - 2020", écrivez vos impressions et vos pensées dans les commentaires!



All Articles