codebuddy.tech

building in public from Vancouver

Tworząc AI między kursami: Pamiętnik programisty z Vancouver odliczającego do FIFA

Czterdzieści dni do momentu, gdy FIFA zstąpi na Vancouver, a ja siedzę w samochodzie przed Starbucksem na Robson Street, laptop na kierownicy, gorączkowo debugując sieć neuronową, czekając na następne zlecenie przewozu. To jest teraz moje życie – niezależny developer AI w dzień, kierowca Ubera z konieczności w nocy, i pełnoetatowy obserwator miasta, które ma zamiar eksplodować własnymi ambicjami.

Od lat haruję w tej podwójnej egzystencji. Koduję cały poranek w jakiejś kawiarni z najlepszym stosunkiem Wi-Fi do hałasu, jeżdżę po południu i wieczorem, żeby zapłacić czynsz za moją klitkę w okolicy Main i Broadway. To nie jest glamour, ale daje mi miejsce w pierwszym rzędzie do ekosystemu technologicznego Vancouver i bieżący obraz tego, jak to miasto naprawdę się porusza. W tej chwili obie perspektywy krzyczą to samo: nie jesteśmy gotowi na to, co nadchodzi.

Problem geografii (perspektywa developera)

Jako ktoś, kto spędza połowę czasu myśląc o architekturze systemów, a drugą połowę nawigując po siatce ulic Vancouver, mogę powiedzieć, że mają one zadziwiająco podobne problemy. Obie zostały zaprojektowane na inną epokę i inną skalę, i obie zostaną wkrótce przetestowane wytrzymałościowo do punktu krytycznego.

W zeszłym miesiącu pracowałem nad algorytmem optymalizacji tras – niczego wymyślnego, po prostu próbowałem zbudować coś, co mogłoby przewidywać wzorce cen dynamicznych dla kierowców – gdy zdałem sobie sprawę, jak fundamentalnie ograniczona jest sieć transportowa Vancouver. Jesteśmy miastem zbudowanym na półwyspie z dokładnie trzema sposobami na dotarcie do North Shore, otoczonym górami, oceanem i rzeką Fraser. Z perspektywy teorii grafów, mamy zdecydowanie zbyt wiele pojedynczych punktów awarii.

BC Place leży w samym centrum naszego najbardziej zatłoczonego węzła. Za każdym razem, gdy jadę do centrum podczas meczu Canucks, widzę, jak cały system zapada się kaskadowo z powodu pojedynczego punktu zatoru. Most Lions Gate się blokuje, zmuszając ruch do Second Narrows lub w dół do Pattullo. Most Granville staje się parkingiem, jeśli ktoś kichnie nie w tę stronę. To klasyczny problem systemów rozproszonych – niewystarczająca nadmiarowość i brak łagodnej degradacji.

Wczoraj odebrałem parę z YVR jadącą do hotelu w centrum. Powinien być szybki kurs, zamienił się w znacznie dłuższy z powodu remontu na moście Arthur Laing. To nasze jedyne realne połączenie między lotniskiem a centrum miasta. Podczas FIFA, gdy tysiące zdezorientowanych, zmęczonych jet lagiem fanów piłki nożnej będzie próbować jednocześnie przebyć to wąskie gardło, mój algorytm trasowania będzie bezużyteczny. Nie da się zoptymalizować podstawowych ograniczeń infrastrukturalnych.

Rozpoznawanie wzorców w ruchu i kodzie

Lata jazdy nauczyły mnie czytać wzorce ruchu w Vancouver jak logi debugowania. Jest w tym rytm, przewidywalne przepływy i stany awaryjne, których uczysz się oczekiwać. Między kursami wprowadzam te dane do modeli uczenia maszynowego, próbując zbudować coś, co mogłoby być naprawdę użyteczne dla innych kierowców podczas FIFA.

Weźmy siatkę ulic West End między późnym popołudniem a wczesnym wieczorem. Robson Street zamienia się w pełzanie od Burrard do Denman – ścieżki rowerowe, ciężarówki dostawcze, remonty, zamieszanie turystów, wszystko tworzy te przewidywalne wąskie gardła. Mam zalogowane setki kursów przez ten obszar, a wzorce są na tyle spójne, że mój model jest w stanie przewidzieć opóźnienia w sensownym oknie czasowym.

Ale jest pewien haczyk z uczeniem maszynowym – załamuje się, gdy podasz mu zupełnie nowe dane. Mój model jest wytrenowany na normalnych wzorcach ruchu w Vancouver. Nie ma pojęcia, co zrobić z tysiącami fanów piłki nożnej, którzy nie wiedzą, że nie można skręcić w lewo z Granville w godzinach szczytu, albo że jazda Robson przez centrum w godzinach szczytu to samobójstwo komunikacyjne.

W zeszłym tygodniu odebrałem turystę, który nalegał na używanie Google Maps, żeby mi "pomóc" nawigować do jego hotelu. Google skierowało nas Denman podczas wieczornego szczytu, bo na ekranie wyglądało to na krótszą trasę. Zajęło nam znacznie więcej czasu, żeby przejechać zaledwie kilka przecznic. Mój pasażer ciągle pytał, dlaczego po prostu nie jadę według GPS-a, nie rozumiejąc, że algorytm Google'a nie bierze pod uwagę lokalnej wiedzy, którą zdobywa się latami. FIFA będzie tą samą rozmową, powiększoną o dziesiątki tysięcy.

Podziemna sieć piłkarska

Praca nad modelami AI opartymi na lokalizacji nauczyła mnie zwracać uwagę na wzorce grupowania w danych, co pewnie jest powodem, dla którego zauważyłem ukrytą kulturę piłkarską Vancouver przed większością ludzi. Są te enklawy pełnych pasji fanów rozsianych po całym mieście – Chorwackie Centrum Kulturalne podczas ważnych meczów, Commercial Drive, gdy grają Włosi, puby w Steveston podczas meczów Anglii.

Śledzę te wzorce nie do końca celowo. Moje dane z kursów pokazują wyraźne skoki wokół wydarzeń piłkarskich, które większość ludzi przegapia, bo patrzą na liczby związane z hokejem. W zeszłym miesiącu odebrałem grupę jadącą na bardzo wczesną oglądanie finału Ligi Mistrzów we wschodnim Vancouver. Byli całkowicie zanurzeni w kulturze piłkarskiej w sposób, który przypomniał mi najbardziej obsesyjnych developerów, jakich znam – głęboka wiedza techniczna, lojalność plemienna i rodzaj pasji, która każe im przemierzać miasto o absurdalnych porach.

Tych istniejących fanów czeka teraz prawdziwy szok od FIFA. Są przyzwyczajeni do niszowych seansów i meczów Whitecaps na pół pustym stadionie. FIFA będzie ich pierwszym smakiem tego, co się dzieje, gdy piłka nożna naprawdę wchodzi do mainstreamu w tym mieście. To jak moment, gdy poboczny projekt developera nagle zdobywa dużą uwagę – ekscytujące i przerażające jednocześnie.

Obciążenie systemu i idealna burza

Każdy developer, który pracował nad problemami skalowania, widzi, co nadchodzi. Letnie miesiące są już szczytowym okresem użytkowania infrastruktury Vancouver. Hotele na pełnym obrocie, restauracje zapchane, SkyTrain przewozi maksymalne ładunki z turystami i mieszkańcami. System już pracuje na wysokich obrotach, zanim dodamy ruch związany z FIFA.

Nie chodzi tylko o fanów piłki nożnej – chodzi o fanów piłki nożnej konkurujących o zasoby z każdym innym użytkownikiem już będącym w systemie. Rodzina z Toronto, która zarezerwowała wakacje w Vancouver miesiące temu, nie obchodzi, że Argentyna gra z Brazylią. Wciąż muszą dostać się z hotelu do Queen Elizabeth Park. Pasażerowie statków wycieczkowych wciąż potrzebują transportu na Granville Island. Pracownik technologiczny jadący do biura w centrum wciąż musi przejechać przez most Cambie.

Modelowałem to jako problem alokacji zasobów, próbując przewidzieć, gdzie uderzą najgorsze wąskie gardła. Dane są niepokojące. Nie mówimy tylko o obciążeniu addytywnym – patrzymy na kaskadowe awarie, gdzie każdy punkt zatoru tworzy zatory poniżej, które rozprzestrzeniają się po całej sieci.

Budowanie dla chaosu

Między kursami wczoraj debugowałem model predykcyjny dla cen dynamicznych, gdy uderzyło mnie: buduję zasadniczo AI dla systemu, który ma zamiar stać się całkowicie chaotyczny. Wszystkie moje dane treningowe opierają się na przewidywalnych wzorcach, które FIFA zniszczy. To jak trenowanie modelu na normalnym ruchu internetowym, a następnie próba wdrożenia go podczas ataku DDoS.

Ale może o to chodzi. Zamiast próbować przewidywać normalne wzorce, powinienem budować dla chaosu. Co jeśli skupiłbym się na odporności zamiast optymalizacji? Szybkiej adaptacji zamiast długoterminowych prognoz? Zacząłem pracować nad innym podejściem – algorytmami grupowania w czasie rzeczywistym, które potrafią identyfikować pojawiające się wzorce ruchu na bieżąco, zamiast próbować je przewidywać z historycznych danych.

To frustrujące i fascynujące jednocześnie. Moja dzienna praca jako kierowca daje mi dane z pierwszej ręki, których większość developerów nigdy nie widzi. Wiem, że skrzyżowanie Burrard i Robson staje się nieprzejezdne podczas niektórych wydarzeń. Wiem, które trasy sugerowane przez Google Maps są w rzeczywistości okropne. Wiem, jak turyści zachowują się inaczej niż mieszkańcy, gdy są zgubieni lub zdezorientowani.

W tym tygodniu odebrałem grupę developerów jadących na meetup technologiczny w centrum. Narzekali na ruch w Vancouver jak na jakąś tajemniczą siłę, zamiast na system z obserwowalnymi wzorcami i przewidywalnymi stanami awaryjnymi. Uderzyło mnie, że większość ludzi budujących aplikacje oparte na lokalizacji w tym mieście nigdy nie jeździła tu zawodowo. Optymalizują dla teoretycznych scenariuszy zamiast rzeczywistych ograniczeń.

Złota żyła danych

Każdy kurs generuje punkty danych dla moich modeli. Lokalizacje odbioru i wysadzenia, czasy przejazdu, wzorce cen dynamicznych, zachowanie użytkowników podczas różnych wydarzeń. Mam już lata tych danych i zaczynają one ujawniać interesujące spostrzeżenia na temat tego, jak Vancouver naprawdę się porusza.

Na przykład, moje dane pokazują wyraźną korelację między wzorcami pogodowymi a przepływem ruchu, którą większość algorytmów trasowania pomija. Deszcz nie tylko spowalnia jazdę – zmienia wzorce popytu, gdy ludzie, którzy normalnie chodzą pieszo lub jeżdżą na rowerze, przełączają się na rideshare. Lekka mżawka konsekwentnie zwiększa liczbę zamówień w niektórych dzielnicach, ale ulewny deszcz faktycznie je zmniejsza, gdy ludzie po prostu zostają w domu.

Podczas play-offów Canucks moje dane pokazały, że wzorce ruchu przesunęły się prawie godzinę przed meczem, gdy ludzie zaczęli ustawiać się na lepsze trasy do centrum. Ale podczas meczów Whitecaps wzór był znacznie bardziej skompresowany – ludzie zdawali się zakładać, że piłka nożna nie przyciągnie dużych tłumów i zostawiali swój zwykły bufor czasowy, co prowadziło do ostatnio-chwilowych skoków zamówień.

FIFA wygeneruje więcej danych transportowych w dwa tygodnie niż Vancouver normalnie widzi w miesiącach. Jeśli uda mi się zbudować systemy, które uczą się i adaptują w czasie rzeczywistym, zamiast polegać na historycznych wzorcach, może pojawić się okazja, by stworzyć coś naprawdę użytecznego na nadchodzący chaos.

Późnonocne sesje kodowania

Jest późno i właśnie skończyłem zmianę za kierownicą – kursy na lotnisko są zawsze dobrym zarobkiem podczas budowania atmosfery przed FIFA, gdy zespoły przygotowawcze i media zaczynają przybywać. Teraz jestem w domu, laptop otwarty, pracuję nad algorytmem grupowania w czasie rzeczywistym, który mnie opętał. Moi sąsiedzi pewnie myślą, że jestem szalony, ale jest coś uzależniającego w próbie rozwiązania niemożliwego problemu.

Głównym wyzwaniem jest przewidywanie bez historycznego precedensu. Moje modele działają świetnie dla normalnego ruchu w Vancouver, bo mam lata podobnych danych do trenowania. Ale FIFA będzie fundamentalnie inna – skala, zachowanie użytkowników, wzorce popytu, wszystko będzie nowe. To jak próba zbudowania AI dla problemu, który nigdy wcześniej nie istniał.

Czytałem artykuły o systemach reagowania kryzysowego i algorytmach zarządzania katastrofami, szukając podejść zaprojektowanych do chaotycznych scenariuszy. Jest kilka interesujących prac nad inteligencją roju i rozproszonym rozwiązywaniem problemów, które mogą mieć zastosowanie. Zamiast próbować przewidywać optymalne trasy, co jeśli zbuduję coś, co mogłoby koordynować rozproszone podejmowanie decyzji między kierowcami w czasie rzeczywistym?

Techniczne wyzwanie jest fascynujące, ale praktyczne implikacje nie dają mi spać w nocy. Wiem dokładnie, jak to jest utknąć w korku w Vancouver z sfrustrowanym pasażerem, patrząc, jak ETA rośnie, a ceny dynamiczne skaczą. FIFA stworzy tysiące takich sytuacji jednocześnie.

Odliczanie do chaosu

Nieco ponad miesiąc. Czuję, jak miasto zaczyna się napinać. Więcej ekip remontowych pracujących w nadgodzinach, by dokończyć projekty przed FIFA. Więcej turystów przyjeżdżających wcześniej, by rozpoznać teren. Więcej stresu w głosach planistów miejskich i urzędników TransLinku, których podwożę na spotkania awaryjne.

Moje modele AI stają się coraz lepsze w radzeniu sobie z niepewnością, ale wciąż są zbudowane na założeniu, że ludzie będą zachowywać się racjonalnie w obliczu wyborów transportowych. Każdy, kto jeździł zawodowo, wie, że to niebezpieczne założenie. Ludzie wybierają trasy, które znają, nawet gdy istnieją lepsze opcje. Wyjeżdżają w najgorszych możliwych momentach. Podejmują decyzje na podstawie niepełnych informacji i trzymają się ich, nawet gdy okoliczności się zmieniają.

Ale może to jest prawdziwa szansa. Nie budowanie AI, która zakłada racjonalne zachowanie, ale budowanie systemów, które uwzględniają ludzką irracjonalność i wciąż znajdują sposoby na optymalizację wokół niej. FIFA może być idealnym poligonem dla algorytmów odpornych na chaos.

Między sesjami debugowania a kursami na lotnisko, dokumentuję wszystko. To odliczanie nie polega tylko na przetrwaniu FIFA – chodzi o zbudowanie czegoś, co mogłoby naprawdę pomóc innym miastom przygotować się na podobne wydarzenia. Każdy korek to punkt danych. Każdy sfrustrowany pasażer to badanie użytkowników. Każda późnonocna sesja kodowania to inwestycja w systemy, które mogą faktycznie działać, gdy wszystko inne się załamie.

Tydzień temu czułem się, jakby to był niemożliwy problem. Teraz czuję, że to najciekawsze wyzwanie, nad jakim kiedykolwiek pracowałem. Vancouver może nie być gotowe na FIFA, ale może, całkiem możliwe, że uda mi się zbudować coś, co pomoże nam wszystkim przetrwać to razem.

Get new posts

Subscribe in your language

New posts delivered to your inbox. Unsubscribe anytime.

Receive in: