Elektriske får med Amazons EC2

Mandelbrot og julia-sæt – jeg ved ikke hvordan du har det med dem, men jeg har altid været fascineret af den kompleksitet og skønhed, som gemte sig bag de relativt simple matematiske formler. De var store i de tidlige 90'ere men siden har jeg ikke hørt meget til dem.

Emnet her ligger langt fra hvad jeg ellers blogger om, men i sommerferien faldt jeg over et projekt kaldet Electric Sheep som benytter sig af en videreudvikling af matematikken i form af fractal flames, kombineret med distribueret beregning á la SETI@home eller Folding@home og en genetisk algoritme til at kombinere "DNA" fra forskellige flames til nye generation af elektroniske får, baseret på bedømmelser fra det sociale netværk omkring projektet. Projektet er med andre ord en kombination af hotte buzz-teknologier fra de sidste 10-15 år, undtaget Cloud Computing, men det kommer jeg tilbage til.

Her er et eksempel på et elektrisk får, bestående af et antal fractal flames i kombination:

Illustration: Privatfoto

Hvorfor kaldes det i øvrigt elektriske får? Det er en reference til Philip K. Dick's "Drømmer androider om elektriske får?" Hvis du ikke kender ham, er det et tegn på manglende (nørde-)dannelse, for han givet inspiration til film som Blade Runner, Minority Report, Total Recall og The Adjustment Bureau. Så mens din PC dagdrømmer, regner screen-saveren fra projektet på små smukke film bestående af sekvenser af billeder som ovenstående.

De videoer, jeg kunne finde af elektriske får, var skuffende i kvalitet og længde, og da ferien var begyndt, ville jeg selv forsøge mig med at lave en film. En opstart fra ingenting var ikke helt nem, men jeg fik da fundet frem til at bruge Apophysis med et script som jeg måtte tilrette uden at have dokumentationen for sproget. Efter at have udvalgt et bestemt får var det bare at sætte min bærbare i gang med beregningerne.

Ambitionen fejlede ikke noget: Opløsningen skulle være tilpas høj (1600*900) og kvaliteten af hvert billede god, hvilket vil sige med omkring 10.000 iterationer pr. styk. For at fremhæve den nærmest hypnotiske effekt af en langsomt hvirvlende vortex, satte jeg maskinen til at beregne 7200 billeder hver med en 20'ende del grads rotation, hvilket ville danne en video som, når den blev loopet, ville roterer i det uendelige.

De fire CPU-tråde på min bærbare gik alle op på 100%, strømforsyningen begyndte at blive lun og så var det bare at vente. Bagefter ville jeg sætte billederne sammen til en film af ca. fire minutters varighed (med VirtualDub).
Jeg havde en luftig ide om at bagefter ville være 3-4 dage senere. Men efter flere timer hvor kun nogle få billeder var blevet færdige, gik det op for mig at bagefter ville være ... omkring jul.

Amazon Elastic Cloud – krympede computere i metermål

Som sagt manglede blot Cloud Computing fra listen af buzz-teknologier som allerede var afprøvet i forbindelse med projektet. Det ville jeg råde bod på i et forsøg på at speede processen op. Man skal jo ikke blive trist bare fordi man mangler lidt computerkraft – den kan jo købes i skyen ad libitum til billige penge. Skyen, her kommer jeg.

Valget faldt ikke overraskende på Amazons cloud. Serveren, jeg forsøgte mig med, var en mellemstørrelse server, markedsført som velegenet til CPU-krævende opgaver, til 28,5 cent i timen. Det lyder jo ikke umiddelbart dyrt. (For de teknik-interesserede var det en c1.medium beskrevet som "5 EC2 Compute Units (2 virtual cores with 2.5 EC2 Compute Units each)").

Uden af slække på ambitionen om kvaliteten af filmen, satte jeg det virtuelle monster i sving og med en dropbox synkroniseret med min egen bærbare, kunne jeg løbende følge med i produktionen.

Den første skuffelse var, at hvert billede tog tre gange så lang tid at lave som på min bærbare. En "rigtig" server i Amazons sky var altså meget langsommere end min usexede Lenovo. Lidt søgning afslørede, at en EC2 Compute Unit blot svarer til en ældre processor, en 1.0-1.2 GHz 2007 Opteron eller 2007 Xeon processor som beskrevet her).

Men ingen panik, det glade budskab fra cloud computing er jo, at jeg bare kunne starte et vilkårligt antal instanser op, fordele opgaven imellem dem og så blive færdig i løbet af få timer i stedet for flere måneder. Konceptet styrede.

Den anden skuffelse kom dog, da jeg regnede ud at filmen ville koste over 2.000 $ i server-leje at få lavet.

Der har været noget debat om dels størrelsen på en Compute Unit og dels om Moores lov i relation til prisudvikling holder for Cloud Computing, i hvert fald hos Amazon, hvor en observatør havde fundet at prisudviklingen var tæt på nul – langt fra den halvering over 18 måneder, som (måske?) kunne forventes. En ting er sikker: For CPU-intensive hobby-projekter kan skyen blive for dyr og vil også være det i årevis fra nu, Moores lov eller ej.

Hvad blev så enden på projektet?
I den ideelle verden vil jeg lave en film med billeder i 3200*2400 (22MB) eller 6400*4800 (88 MB). Men for at få en film parat inden for rimelig tid til rimelige penge måtte jeg gå ned i ambitionsniveau. Efter en halv uges CPU-tid, dels på min bærbare, dels hos Amazon, blev dette resultatet:

Kommentarer (13)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Peter Nørregaard Blogger

Jeg kiggede lidt på flam3 men den var lidt for kryptisk. Flam4 lyder spændende selvom min stationære er meeget gammel.

(Josef, og en Lenovo er altså ... usexet! Men selvfølgelig er den meget praktisk. Og så er den sort på sådan en gnidret måde)

  • 0
  • 0
Peter Nørregaard Blogger

Den indlejrede video er ikke specielt tydelig - men prøv at sætte den op til HD - så ser det ud af lidt mere.

Men jeg kan dog se at YouTubes komprimering nok er bedre til "stabil baggrund - bevægelig forgrund" eller "vandrette bevægelser" end til en roterende flame-animation med mange detajler ud over hele billedet.

Bud på en bedre video-delingsplatform modtages gerne (obs - filen er originalt på ca. 2 GB)

  • 0
  • 0
Peter Nørregaard Blogger

Mogens, jeg fik slet ikke svaret dig: Det var simpelthen fordi jeg ikke fik øje på muligheden. Jeg er lidt på vagt her, da den underliggende CPU-arkitktur er vigtig: Apophysis kun understøtter otte tråde så hvis den enkelte fysiske processor ikke er kraftig nok er det nok tvivlsom om programmet får fuld nytte af maskinen.

  • 0
  • 0
Jeppe Toustrup

Jeg har lige prøvet at downloade original videoen fra Vimeo, og så vidt jeg kan se med VLC har den en bitrate på 140 Mbit, hvilket er absurt højt. Normalt når jeg laver videoer i 1080p, 30 fps, så har jeg en bitrate på 8-10 Mbit. Dette forklarer også hvorfor din video fylder så meget.
Vimeo giver også mulighed for at downloade videoen som en .mp4 fil de har reencoded, den fylder kun 8 MB.
Jeg tror du skal have kigget lidt på indstillingerne i din video encoder.

  • 0
  • 0
Log ind eller Opret konto for at kommentere