Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Témata - GloGlo

Stran: [1]
1
/dev/null / Vytvoření "dokonalý" veřejný dopravy pomocí AI
« kdy: 04. 09. 2022, 22:44:28 »
Mám jenom takovej nápad, nechystám se ho realizovat a profesně se pohybuju úplně mimo IT, (veřejnou) dopravu, demografii atd a ani nejsem úředník nebo politik:) Jsem v této oblasti v podstatě BFU, nemám s něčím takovým zkušenosti. Možná si to celý představuju jako Hurvínek válku, nevím :)

1) Na jedné straně máme stát a ten má různý "databáze" jako např. katastr nemovitostí, registr obyvatel, různý daňový registry, údaje o platbách sociálního pojištění, výdajích zdravotních pojišťoven atd. Dále údaje ze sčítání obyvatel.

Když vůbec nebudu řešit v jaký formě ty data jsou a jak moc těžký by bylo je všechny nějak (anonymizovaně) vyexportovat, prostě stát má hafo různejch údajů - a dále má samozřejmě možnost si další potřebný údaje opatřit.

Když se všechny data dají dohromady, tak by se v podstatě dal udělat plus mínus přesnej model toho, kde lidi bydlí, kde pracujou, kam chodí do školy, k lékaři/do zdravotních zařízení, na úřady atd. Takže bychom měli jakousi první "vrstvu". V ni vidíme, že třeba město má 10 tisíc obyvatel s trvalým pobytem, odhadujeme, že reálně tam bydlí 9000 lidí, dalších 500 lidí tam stráví 5-10 dní za měsíc (víkendy). Víme, že tam jsou 3 základky, 2 střední školy (známe počet žáků), dále víme, kolik tam je lékařů, kolik mají pacientů a kolik mají ti lékaři průměrně návštěv týdně, dále máme údaje o zaměstnavatelích - víme, kolik lidí ve městě pracuje, nejenom, že tam jsou 2 velké továrny se stovkami zaměstnanců, ale dokážeme odhadnout i počty zaměstnanců malých firem. A dále víme, jaký v tom městě jsou služby - kolik je tam restaurací, kadeřnictví, autoservisů, pobočet bank, obchodů atd a dokážeme odhadnout, kolik asi mají průměrně zákazníků.

2) Druhá vrstva by byla, že se vezmou data o tom, kam lidi typicky směřujou (viz výše) a pokusí se určit jednak to, odkud ty lidi tam směřujou a pak v jakém čase. V první vrstvě třeba vidíme, že základka má 300 žáků a odhadujeme, že 250 žáků je přímo z města, tak ve druhém kroku odhadujeme z jakých vesnic okolo se do tý školy pohybuje zbývajících 50 žáků a dále v jakém čase (tzn. před začátkem vyučování). Něco podobnýho by se samozřejmě udělalo i pro ty další cíle jako jsou úřady, zdravotní zařízení, služby, zaměstnavatelé atd. V konečném důsledku bychom tedy měli jakýsi model toho, k jakým pohybům lidí dochází a přibližně kdy.

3) Třetí vrstva je veřejná doprava. Máme jednak statická data - mapy. Na mapách jsou nejenom údaje o tom, kde lidi bydlí, pracujou, chodí do škol atd, ale taky tam máme silnice, železnice a body jako jsou autobusový zastávky s vlakový nádraží. Známe cestovní rychlosti dosažitelný na každým úseku silnice, železnice atd. Známe různý omezení (např. na jednokolejné železnici může jet v jednu chvíli jen 1 vlak, vlaky se někde musí křižovat, po některých silnicích busy nemůžou nebo to nechceme atd). Další omezení jsou třeba směny zaměstnanců a reálnej počet dopravních prostředků.

4) Další vrsta je budget na veřejnou dopravu. Každý kraj rozhoduje o tom, kolik dá na dopravu peněz (řádově miliardy). Doprava se objednává jako "vlakokilometry" a "busokilometry". Jeden kilometr jízdy vlaku stojí třeba 200 kč, u busu je to třeba 100 kč. Dejme tomu že ty ceny jsou fixní.

No a teď co je cíl celého projektu/modelu: Máme kraj a ten alokoval nějaký budget na dopravu. Dejme tomu miliardu korun. A tu miliardu chce utratit co nejlépe - cílem tedy je najít takovou kombinaci vlakokilometrů+busokilometrů, aby to celkově vzato mělo co největší užitek. Víme odkud&kam&kdy se lidi pohybujou (viz výše) -> a chceme jím v tom "helfnout" tím, že jim na to objednáme vlaky a busy. Cílem je co nejvíc lidí co nejvíc přiblížit místu, kam reálně směřujou - a to samozřejmě co nejrychleji (tzn. co nejpříměji).

Máme ale samozřejmě nějaký systém priorit/pravidel. Např. chceme, aby každý žák, který to má do školy déle než 2 kilometry, měl možnost jet vlakem nebo busem, další priorita třeba je, že z každé vesnice s více než 100 obyvateli má každý pracovní den jet aspoň 1 spoj do nejbližšího zdravotnickýho zařízení a po 3-4 hodinách zpátky atd. Takových pravidel/priorit asi může být hodně.

Cílem projektu/modelu je v podstatě dokonalá veřejná doprava. Dokonalá v tom smyslu, že by došlo k nejoptimálnějšímu utracení rozpočtu. Model by vytvořil takovou veřejnou dopravu, že s daným budgetem na dopravu by prostě nemohla být lepší. (Lepší by mohla být jedině kdyby se zvýšil ten budget.)

Šlo by něco takovýho naprogramovat, jak náročný by to asi bylo? Kolik by na to asi bylo potřeba lidí, jak dlouho by trval vývoj a jaký by byly náklady?

2
Rozumíte někdo mechanismu toho, jak funguje Powell Method - hledání minima/maxima funkce bez použití gradientů? Používám scipy.optimize.minimize ve snaze najít globální maximum mé funkce MyFunction s mnoha proměnnými (500+). (MyFunction je bohužel step function a její derivace je pro jakoukoli hodnotu zero gradient, takže nejde použít metody využívající derivace).

Když to hledání maxima spustím s nějakými náhodnými výchozími hodnotami, třeba to začne na úrovni, kdy moje funkce dá hodnotu -7000000 - tak to většinou udělá celkem rychle progres a najde hodnotu funkce o dost vyšší než ta výchozí hodnota - třeba skončí na -1000000 nebo +500000. Měl jsem zato, že to je tedy maximální hodnota funkce, kterou to dokáže najít a tím jsem měl věc za uzavřenou.

Jenže sem si všimnul, že když si uložím ty koeficienty z toho jakoby nejúspěšnějšího pokusu a spustím hledání znovu s těmito koeficienty jako výchozími hodnotami - tak to v některých případech vrátí výsledek, který je malinko lepší.

Takže jsem si udělal loop, který vypadá takhle:

Kód: [Vybrat]
start = np.random.sample(532)
res = minimize(MyFunction, start, method='Powell')

while True:
   res = minimize(MyFunction, start, method='Powell')
   start = res.x
Takhle se to postupně propracovává k lepšímu a lepšímu výsledku, příklad:

Kód: [Vybrat]
   
      2 1210270.0
      1 1210780.0
      1 1213950.0
    141 1214800.0
      1 1216230.0
      7 1219820.0
      2 1220800.0
      1 1222210.0
      7 1222500.0
      1 1228050.0
      4 1229650.0
     43 1231510.0
     95 1232520.0
     22 1234020.0
     38 1234320.0
      3 1243910.0
     60 1245490.0
     20 1245700.0
     14 1245840.0
      1 1246830.0
      1 1247830.0
    117 1247940.0
     15 1250220.0
     38 1255260.0
     11 1256940.0
     44 1257950.0
     11 1258060.0
    362 1265900.0
     94 1267220.0
      8 1269460.0
    428 1270720.0
    604 1271960.0
     94 1272000.0
      5 1272840.0
    141 1275320.0
      5 1275520.0
    200 1276930.0
Ten druhý sloupeček je aktuální hodnota globálního maxima MyFunction, je vidět, že to hledání funguje. Problém je v tom prvním čísle - to je kolikrát skript spustil minimize() s koeficienty odpovídajícími jedné hodnotě funkce než to našlo vyšší.

Problém je v tom, že jedno to spuštění funkce minimize udělá cca 3-5000 evaluací MyFunction a to na AMD EPYC 7B13 (CPU MHz: 3049.996, BogoMIPS: 6099.99) trvá cca 90-120 sekund. Takže když to bylo aktuálně na hodnotě 1271960, tak trvalo asi 16 hodin než to malinko popostoupilo a našlo vyšší hodnotu.

Máte někdo nápad, jak tohle zrychlit? (Pozn: Už jsem to hodně zrychlil použitím JIT - jedna evaluace MyFunction je teď podle mého odhadu (neměřil jsem) 100x rychlejší než bez JIT - výše uvedeného hodnoty už jsou s JIT)

3
Vývoj / AI: jak najít nejziskovější variantu?
« kdy: 15. 08. 2022, 19:08:13 »
Mám dataset s asi 130k sportovními zápasy a různé informace o těch zápasech - samozřejmě výsledek (1/0/2), kurs na favorita/remízu/outsidera a různé statistické údaje.

Dataset jsem zkompiloval s cílem zkusit zapojit AI jestli mi v tom nenajde nějaký vzorce, který by šly využít při sázení.

Dal jsem to do modelu a ten umí předpovědět výsledek s úspěšností kolem 60% - no jenže to přesně odpovídá tomu, kdy vyhraje favorit - a takyže jo, model teda vlastně ve 100% případech předpoví, že vyhraje favorit, a protože vyhraje v 60% případech, tak má v 60% případech pravdu :) Jak geniální, že? .. Jenže samozřejmě sázet vždy na favorita se statisticky absolutně nevyplatí a kdyby někdo vsadil 1000 Kč na favorita ve všech těch 130k zápasech, tak skončí necelý 3 miliony v mínusu.

Takže se mi zdálo, že prostě ty moje parametry jsou slabý a vlastně to celý byla jen ztráta času. A jen sem si tak hrál s parametrama toho modelu - má různý solvery a ty dávaly drobně jiný výsledky. A pak sem si všiml, že jedna kombinace (solver+penalty) sice taky má úspěšnost kolem 60%, ale aspoň ve všech případech neurčí, že vyhraje favorit - výhru favorita předpoví "pouze" ve 122k případech a asi ve 4,5k případech předpoví remízu a ve 3,5k výhru outsidera. (To jsou samozřejmě stále velmi slabý čísla - reálně favorit z těch 130k zápasů vyhraje 78,5k, remíz je asi 17k a favorit vyhraje asi 34,5k)

... Pořád by to nebylo nic, co stojí za zmínku.. jenže sem zkusil udělat kalkulaci a podle kurzů, kdyby někdo vsadil na outsidera ve všech těch případech, kdy to model předpověděl, tak by to bylo ziskový! Celkovej zisk z těch 3,5k sázek by teda byl "jen" asi 219000 Kč, což odpovídá cca 60 Kč na zápas a tedy ziskovost asi 6%. No ale ale na druhou stranu... Vlastně to není vůbec špatný.

Hlavní věc ovšem je, že jsem tuto kombinaci vlastně objevil náhodou a ne tak, že bych ji cíleně hledal, a tak si říkám, že kdybych ten model udělal nějak líp, tak by mi mohl najít třeba i ziskovější varianty.

Jenže vlastně vůbec netuším, jak něco takovýho udělat. Uměl byste někdo poradit?

4
Vývoj / Kolik je potřeba RAM, aby tento kód doběhl?
« kdy: 06. 08. 2022, 04:07:32 »
Kód: [Vybrat]
import itertools as it
x = [1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0]
print (len([p for p in it.product(x, repeat=10)]))

Zkoušel jsem to několikrát na 16 GB RAM, ale vždycky to spadlo :D

5
Odkladiště / Pořízení anonymní domény
« kdy: 12. 07. 2022, 14:51:11 »
Zdravím. Máte někdo zkušenost s tím, jak si pořídit doménu, aby nebylo z žádného záznamu vidět, kdo ji vlastní? Prostě aby byla anonymní? Je mi jasný, že správce domény asi vlastníka vždycky uvidí a že třeba .cz doména takhle pořídit nejde, ale tipuju, že třeba .com by jít mohla? Popř. nějaké jiné?

6
Mám velké množství dat (cca 10 GB) ve formátu JSON, asi 2 miliony souborů. Je tam hodně různých parametrů/keys, asi 100, a hlavně vícestupňová soustava (některý parametr obsahuje dict a ten zase dict a ten zase dict atd).

V ideálním případě bych to chtěl nějak narvat do jedné databáze, kde by každý ten dict byl samostatná tabulka a bylo to navzájem propojené přes foreign_keys. Ale už i jen samotné vytvoření struktury databáze bude piplačka metodou pokus omyl a nehledě pak na ten import.

Asi jsem hodně naivní/línej, ale je nějaký nástroj, který by mi tu strukturu databáze vytvořil automaticky a byl schopný i provést import? :-) Samozřejmě by mi to extrémně moc usnadnilo práci :D

Databáze ideálně SQL, resp. aby s ní šlo pracovat přes SQLAlchemy.

7
Snažím se scrapovat jeden web a zjistil sem, že data, který potřebuju, do prohlížeče proudí přes websocket connection. V Chrome dev tools (Network -> WS) tu WS vidím, jsou tam headers i obsah těch proudících dat (v mém případě zazipovaný, ale to je teď vedlejší). Ale abych tu websocket connection byl schopnej navázat i mimo browser a mohl se vykašlat na spouštění prohlížeče, což je hrozně pomalý a žere to moc CPU, tak nějak potřebuju tý druhý straně poslat hand-shake a ten v těch dev tools prostě nevidím. Je nějakej způsob, jak zjistit, jakej hand-shake prohlížeč posílá?

8
Zdravím. Chtěl bych se zeptat, jaký je nejrychlejší a nejednodušší headless browser s Javascriptem. Jde mi o webscrawling.

Momentálně používám headless Chrome přes Selenium, nedělám nic složitýho, ale žere to hrozně moc CPU. (Mám jich spuštěných několik současně).

Potřebuju, aby to umělo Javascript a hlavně fungovalo přes Python, Javu vůbec neumím.

Pokoušel sem se několik hodin rozjet Htmlunit přes selenium-server, ale za živýho boha sem nepřišel na to, jak to udělat.

9
Server / Přibližná cena serveru+elektřiny na AI
« kdy: 27. 06. 2022, 14:27:08 »
Zdravím. Nejsem ajťák, je to jen můj koníček. Nedávno jsem se spíš jako hobby začal učit Machine learning/AI dle kurzu na Udemy, ale jsem teprv začátečník. V budoucnu bych chtěl vytvořit určitý svůj projekt, který asi bude vyžadovat hodně výpočetní síly, ale nedokážu to v tuto chvíli odhadnout.

Každopádně moje otázka: mám nějaké skripty v Pythonu spíš na hraní/učení a sbírám pro ně data. Momentálně mám třetí VPS. První byl asi za 15 EUR/měsíc 8jádro někde v Litvě, pak sem zkoušel Microsoft Azure, kde mi dali 100 USD kredit, ale ten sem docela rychle vyčerpal a hlavně měl problém s jejich IP adresami, na některé se prostě nešlo připojit přes některé porty, třeba z mobilu. Netuším proč. A momentálně mám server v Holandsku u firmy, která mi dala na měsíc 100 EUR kredit, je to 16jádro 16GB RAM a normálně by to stálo zhruba 100 EUR/měsíc.

A teď moje otázka: ten server, který v současnosti mám, je asi ten nejhorší typ, každopádně mi jeden výpočet trval zhruba 450-500 sekund, což by nebylo tak hrozné. Jenže mi pak poslali mail, že příliš moc využívám CPU a že mi nějak odebrali Burst Mode, který mi to zrychloval o 100%, jenže se mi zdá, že se to teď zpomalilo ještě mnohem víc, jeden test teď trvá kolem 1400 sekund a to už se mi zdá celkem pomalé.

Jedna z možností, kterou zvažuju, je, že bych si koupil nějaký svůj server, třeba z druhé ruky. Jde mi hlavně o CPU, RAM asi není potřeba zas tak moc, těch 16GB by mohlo stačit (ale na 100% jistý si nejsem). Za kolik by šlo pořídit nějak levně server s třeba 24 nebo 48 CPU?

A dále, kdybych si ho hypoteticky pořídil, tak kolik to pak žere elektřiny? :-) Prostě mi jde o to, jestli se víc vyplatí si takový server koupit a nebo pronajmout jako VPS.

Díky za vaše tipy/odhady :)

Stran: [1]