Nordic West Academy Industriell AI · Göteborg

Antagning

Provet ligger öppet.
Gör det utan att ansöka.

Här är hela övningsprovet, alla fem uppgifterna, med bedömningskriterierna utskrivna under varje. Du behöver inget konto och du behöver inte söka. Läs det och avgör själv om nivån är din.

Uppgifter5 stycken
TidFyra timmar, egen dator
HjälpmedelAllt utom en annan människa
Godkänt4 av 5 uppgifter

Varför provet är öppet

Vi vill inte ha många sökande. Vi vill ha rätt sökande.

Ett dolt urvalsprov gör två saker: det skrämmer bort folk som hade klarat det, och det släpper in folk som inte klarar kursen. Båda är dyra, och dyrast för dig.

Så vi publicerar provet. Den som läser det och tänker det här kan jag inte har sparat en ansökan och en termin. Den som läser det och sätter sig att lära sig innehållet har lärt sig precis det vi ville att hen skulle kunna. Det är inte ett kryphål. Det är hela poängen.

Vid ansökan gör du en skarp version med samma struktur och andra uppgifter, under övervakade former. Uppgifterna roterar mellan omgångarna.

Hjälpmedel: ja, även språkmodeller

Du får använda vilket verktyg du vill, inklusive kodassistenter. Det är så arbetet går till.

Men uppgifterna är byggda så att ett rakt svar från en språkmodell blir godkänt på ytan och underkänt i sak. Uppgift 1 och 3 ger båda ett självsäkert och fel svar om du inte läser datat själv. Det vi bedömer är om du märker det.

På den skarpa versionen får du dessutom försvara ditt svar muntligt i tjugo minuter. Där syns skillnaden direkt.

Övningsprovet

De fem uppgifterna.

Uppgifterna nedan är den öppna versionen. Datafilerna som hör till varje uppgift lämnas ut vid ansökan; formuleringen och bedömningen är densamma.

1. Modellen som är för bra

Uppgiften. Du får en Python-fil på sextio rader som tränar en klassificerare på sensordata från en produktionslinje. Den rapporterar 0,97 i träffsäkerhet på testmängden. Kollegan som skrev den är nöjd. Du ska säga om siffran går att lita på.

scaler = StandardScaler().fit(X)
X = scaler.transform(X)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.2)
...
print(accuracy_score(y_te, model.predict(X_te)))   # 0.97

Frågan. Går siffran att lita på? Om inte: vad är fel, hur stort är felet ungefär, och hur ser den rättade koden ut?

VAD VI BEDÖMER

  • Att du ser att skalningen sker före uppdelningen, så att testmängden läcker in i träningen.
  • Att du hittar det andra felet också: klasserna är obalanserade, 96 mot 4 procent, och träffsäkerhet är då fel mått. En modell som alltid svarar normal får 0,96.
  • Att du föreslår ett mått som betyder något här, till exempel precision, återkallelse eller PR-AUC, och motiverar valet utifrån vad ett missat fel kostar mot vad ett falsklarm kostar.

Vanligaste underkända svaret: att bara hitta läckaget. Det är hälften av uppgiften. Den obalanserade klassfördelningen är den som faktiskt gör siffran meningslös, och den syns bara om du tittar på datat.

2. Containern som startar om

Uppgiften. En modelltjänst i Kubernetes startar om ungefär var fyrtionde minut. Trafiken är jämn. Du får kubectl describe pod, de senaste hundra raderna logg och en graf över minnesanvändning.

State:          Running
Last State:     Terminated
  Reason:       OOMKilled
  Exit Code:    137
Restart Count:  17
Limits:         memory: 512Mi

Loggen slutar mitt i en rad varje gång. Minnesgrafen är en jämn uppförsbacke som nollställs vid varje omstart.

Frågan. Vad händer, hur bekräftar du det, och vad gör du åt det, i tur och ordning med det billigaste först?

VAD VI BEDÖMER

  • Att du läser OOMKilled och exitkod 137 rätt: kärnan dödar processen, tjänsten kraschar inte själv.
  • Att du skiljer på symptom och orsak. Att höja minnesgränsen flyttar omstarten till varannan timme, den tar inte bort läckan.
  • Att du föreslår en ordning: höj gränsen för att sluta blöda, bekräfta läckan med en minnesprofil, hitta vad som växer: batchar som ackumuleras, en cache utan tak, tensorer som aldrig frigörs.
  • Att du nämner vad du sätter för larm så att nästa gång upptäcks av dig och inte av kunden.

Vanligaste underkända svaret: ”öka minnesgränsen”. Rätt första åtgärd, men inte ett svar på frågan.

3. Nio procentenheter på tre veckor

Uppgiften. En klassificerare för avvikelser i en produktionslinje går från 94 till 85 procents träffsäkerhet under tre veckor efter driftsättning. Koden är oförändrad. Modellvikterna är oförändrade. Du får indata, prediktioner och facit för hela perioden, dag för dag.

I datat: en av sexton sensorer började för nitton dagar sedan rapportera i en annan enhet efter ett fältbyte, en annan har fastnat på sitt senaste värde, och andelen körningar i nattskift har gått från 12 till 31 procent.

Frågan. Vilken av de tre förklarar tappet? Visa hur du avgör det, inte bara vad du tror. Vad föreslår du för åtgärd, och hur hindrar du att samma sak händer igen utan att någon märker det?

VAD VI BEDÖMER

  • Att du mäter i stället för att gissa: jämför fördelningen per feature före och efter, och bryt ned felet per tidsperiod och per skift.
  • Att du ser att alla tre är verkliga förändringar men bara en driver felet, och att du kan visa vilken.
  • Att du skiljer på ett trasigt dataflöde och en verklig förändring i verksamheten. Det första lagas i integrationen, det andra kräver omträning. Fel åtgärd på fel orsak gör det värre.
  • Att åtgärdsförslaget innehåller en detektion: validering av indata, larm på fördelningsförskjutning, en fastnad-sensor-kontroll.

Vanligaste underkända svaret: ”modelldrift”. Rätt ord, inget svar. Frågan är vad i datat som rörde sig och hur du vet det.

4. Sensordata mot arbetsordrar

Uppgiften. Två tabeller. sensor med en avläsning per maskin var tionde sekund, tidsstämplad i UTC. arbetsorder med underhållsåtgärder, tidsstämplade i lokal tid utan tidszon, ibland dubblerade när någon registrerat samma åtgärd två gånger.

Du ska ta fram, per maskin och månad: antal åtgärder, mediantid mellan åtgärder, och medeltemperatur under de 24 timmarna före varje åtgärd.

Frågan. Skriv frågan. Skriv också ned vilka antaganden du tvingas göra, och vilket av dem som skulle göra mest skada om det var fel.

VAD VI BEDÖMER

  • Att du hanterar tidszonen explicit, inklusive de två timmarna om året då lokal tid är tvetydig eller inte finns.
  • Att du avdubblerar på något mer genomtänkt än DISTINCT. Samma åtgärd registrerad två gånger har ofta olika id och olika sekund.
  • Att fönstret på 24 timmar före räknas mot faktisk tid, inte mot antal rader.
  • Att du skriver ut antagandena. Den som listar sina antaganden får mer poäng än den som råkar gissa rätt utan att nämna det.

Vi läser inte efter dialekt. PostgreSQL, T-SQL eller Pandas fungerar lika bra, så länge det går att följa.

5. Är systemet högrisk?

Uppgiften. Ett energibolag vill driftsätta en modell som förutsäger fel i ställverk och automatiskt sänker belastningen på en ledning när risken överstiger en tröskel. Ingen människa i loopen. Systemet loggar sina beslut.

Frågan. Är det ett högrisksystem enligt EU:s AI-förordning? Motivera med den bestämmelse du stödjer dig på. Om du behöver mer information för att svara: vilken, och varför är just den avgörande?

VAD VI BEDÖMER

  • Att du går till bilaga III och punkten om kritisk infrastruktur i stället för att svara på magkänsla.
  • Att du ser att svaret hänger på om systemet är en säkerhetskomponent i driften av eldistribution, och att du kan säga vad som avgör det.
  • Att du frågar efter rätt sak: vad händer om modellen har fel åt båda hållen, och vad kan en människa göra åt det och hur snabbt.
  • Att du skiljer på vad förordningen kräver och vad som är gott ingenjörsarbete. Båda behövs, men de är inte samma sak.

Vanligaste underkända svaret: ett tvärsäkert ja eller nej. Den här uppgiften mäter om du vet var gränsen för din kunskap går och kan säga det högt. Ett välmotiverat ”det beror på, och det här behöver jag veta” är fullt godkänt.

Uppgifterna ovan är den öppna övningsversionen och roterar inte. Den skarpa versionen har samma fem områden och andra uppgifter, och byts mellan omgångarna.

Bedömning

Vad vi tackar nej till.

De flesta skolor skriver vad som krävs för att komma in. Här står det omvända, för det är den informationen du behöver för att slippa slösa en ansökan.

Vi säger ja till

  • Den som löser fyra av fem uppgifter och kan försvara sina val muntligt.
  • Den som svarar ”det vet jag inte, så här skulle jag ta reda på det” och beskriver en metod som håller.
  • Den som gör ett fel och hittar det själv under det muntliga.
  • Den som har byggt något litet på riktigt framför den som har läst mycket.

Vi säger nej till

  • Den som inte kan läsa och ändra en Python-fil på sextio rader. Utbildningen lär inte ut grundläggande programmering. Den bygger vidare på den.
  • Den som svarar rätt utan att kunna förklara varför. Vi frågar alltid.
  • Den som lämnar ett svar som ser färdigt ut men inte går att köra.
  • Den som beskriver ett verktyg när frågan gällde ett problem.

Formell behörighet, utöver provet

Grundläggande behörighet är gymnasieexamen eller motsvarande. För MLOps-ingenjör krävs dessutom Programmering 1 och 2, Matematik 3b eller 3c och Engelska 6, eller motsvarande kunskaper. För Molnproduktutvecklare räcker Programmering 1, Matematik 2 och Engelska 6.

Reell kompetens gäller. Har du arbetat som utvecklare och saknar betygen prövar vi kunskapen i stället för papperet. Det är delvis vad provet är till för.

Ansökan

Ingen omgång är öppen än.

Utbildningsplanerna är färdiga och bereds för ansökan till Myndigheten för yrkeshögskolan. Vi kan inte anta någon förrän ett beslut finns, och vi tänker inte samla in ansökningar till en utbildning som ännu inte är beviljad.

Vad du kan göra nu

  • Gör övningsprovet ovan. Det är samma nivå som den skarpa versionen.
  • Skriv till oss om du vill ha besked när en omgång öppnar: info@nordicwestacademy.se. Vi sparar adressen och inget annat, och använder den till precis det.

Om du är arbetsgivare

  • Vill ni vara med och skriva kursplanen är det nu det avgörs, innan ansökan lämnas in.
  • En påskriven avsiktsförklaring väger tyngst av allt vi kan lägga i ansökan. Så går det till.