Jezioro Danych – zastosowanie uczenia maszynowego

W erze cyfryzacji rośnie zapotrzebowanie na zaawansowane technologie nie tylko do gromadzenia, ale przede wszystkim analizy danych. Przedsiębiorstwa akumulują coraz większe ilości różnorodnych informacji, które mogą zwiększać ich efektywność i innowacyjność. Produkt Data Engineering oferowany przez firmę BFirst.Tech może odgrywać kluczową rolą w procesie wykorzystywania tych danych dla dobra firmy.  Jest to jedna z najnowocześniejszych technologii do efektywnego zarządzania i przetwarzania informacji. W niniejszym artykule przedstawimy jedną z możliwości oferowanych przez Jezioro Danych.

Data Engineering – najnowsza technologia do zbierania i analizowania informacji 

Inżynieria danych to proces projektowania oraz wdrażania systemów do efektywnego zbierania, przechowywania i przetwarzania obszernych zbiorów danych. Wspiera to akumulację informacji, takich jak analiza ruchu na stronach internetowych, dane z czujników IoT, czy trendy zakupowe konsumentów. Zadaniem inżynierii danych jest zapewnienie, że informacje są zręcznie gromadzone i magazynowane oraz łatwo dostępne i gotowe do analizy. Dane mogą być efektywnie przechowywane w jeziorach, hurtowniach czy składnicach danych, a tak zintegrowane źródła danych mogą służyć do tworzenia analiz lub zasilania silników sztucznej inteligencji. Zapewnia to wszechstronne wykorzystanie zgromadzonych informacji (patrz szczegółowy opis produktu Data Engineering (rys. 1)).

Data Engineering, sustainable data management

rys. 1 – Data Engineering

Jezioro Danych w przechowywaniu zbiorów informacji  

Jezioro Danych pozwala na przechowywanie ogromnych ilości surowych danych w ich pierwotnym, nieprzetworzonym formacie. Dzięki możliwościom, jakie oferuje Data Engineering, Jezioro Danych jest zdolne do przyjmowania i integracji danych z różnorodnych źródeł. Mogą to być dokumenty tekstowe, ale także obrazy, aż po dane pochodzące z czujników IoT. To umożliwia analizę i wykorzystanie złożonych zbiorów informacji w jednym miejscu. Elastyczność Jezior Danych oraz ich zdolność do integracji różnorodnych typów danych sprawiają, że stają się one niezwykle cenne dla organizacji, które stoją przed wyzwaniem zarządzania i analizowania dynamicznie zmieniających się zbiorów danych. W przeciwieństwie do hurtowni danych, Jezioro Danych oferuje większą wszechstronność w obsłudze różnorodnych typów danych. Jest to możliwe dzięki zaawansowanym technikom przetwarzania i zarządzania danymi stosowanym w inżynierii danych. Jednakże, ta wszechstronność rodzi również wyzwania w zakresie przechowywania i zarządzania tymi złożonymi zbiorami danych, wymagając od inżynierów danych ciągłego dostosowywania i innowacyjnych podejść. [1, 2] 

Jezioro Danych a przetwarzanie informacji i wykorzystanie uczenia maszynowego

Rosnąca ilość przechowywanych danych oraz ich różnorodność stanowią wyzwanie w zakresie efektywnego przetwarzania i analizy. Tradycyjne metody często nie nadążają za tą rosnącą złożonością, prowadząc do opóźnień i ograniczeń w dostępie do kluczowych informacji. Uczenie maszynowe, wsparte przez innowacje w dziedzinie inżynierii danych, może znacząco usprawnić te procesy. Wykorzystując obszerne zbiory danych, algorytmy uczenia maszynowego identyfikują wzorce, przewidują wyniki i automatyzują decyzje. Dzięki integracji z Jeziorami Danych (rys. 2), mogą one pracować z różnymi typami danych, od strukturalnych po niestrukturalne, umożliwiając przeprowadzanie bardziej złożonych analiz. Ta wszechstronność pozwala na głębsze zrozumienie i wykorzystanie danych, które byłyby inaczej niedostępne w tradycyjnych systemach.

Zastosowanie uczenia maszynowego w Jeziorach Danych umożliwia głębszą analizę i efektywniejsze przetwarzanie dzięki zaawansowanym narzędziom i strategiom inżynierii danych. Pozwala to organizacjom transformować ogromne ilości surowych danych w użyteczne i wartościowe informacje. Jest to istotne dla zwiększenia ich efektywności operacyjnej i strategicznej. Ponadto, wykorzystanie uczenia maszynowego wspomaga interpretację zgromadzonych danych i przyczynia się do bardziej świadomego podejmowania decyzji biznesowych. W efekcie, firmy mogą dynamiczniej dostosowywać się do rynkowych wymogów i innowacyjnie tworzyć strategie oparte na danych. 

Jezioro danych

rys. 2 – Jezioro Danych

Podstawy uczenia maszynowego oraz kluczowe techniki i ich zastosowania  

Uczenie maszynowe, będące integralną częścią tzw. sztucznej inteligencji, umożliwia systemom informatycznym samodzielne uczenie się i doskonalenie na podstawie danych. W tej dziedzinie wyróżniamy typy uczenia takie jak uczenie nadzorowane, uczenie nienadzorowane i uczenie ze wzmocnieniem. W uczeniu nadzorowanym każdy przykład danych ma przypisaną etykietę lub wynik, który pozwala maszynom na naukę rozpoznawania wzorców i przewidywania. Stosowane jest to m.in. w klasyfikacji obrazów lub prognozowaniu finansowym. Z kolei uczenie nienadzorowane, pracujące na danych bez etykiet, skupia się na znajdowaniu ukrytych wzorców. Jest to użyteczne w zadaniach takich jak grupowanie elementów czy wykrywanie anomalii. Natomiast uczenie ze wzmocnieniem opiera się na systemie nagród i kar, pomagając maszynom optymalizować swoje działania w dynamicznie zmieniających się warunkach, jak np. w grach czy automatyce. [3]

Co jeśli chodzi o algorytmy? Sieci neuronowe są doskonałe do rozpoznawania wzorców skomplikowanych danych – jak obrazy czy dźwięk – i stanowią podstawę wielu zaawansowanych systemów AI. Drzewa decyzyjne są używane do klasyfikacji i analizy predykcyjnej, na przykład w systemach rekomendacji lub prognozowaniu sprzedaży. Każdy z tych algorytmów ma swoje unikalne zastosowania. Może być dostosowany do specyficznych potrzeb zadania lub problemu, co czyni uczenie maszynowe wszechstronnym narzędziem w świecie danych. 

Przykłady zastosowań uczenia maszynowego 

Zastosowanie uczenia maszynowego w Jeziorach Danych, otwiera szerokie spektrum możliwości, od detekcji anomalii po personalizację ofert i optymalizację łańcuchów dostaw. W sektorze finansowym algorytmy te skutecznie analizują wzorce transakcji, identyfikując nieprawidłowości i potencjalne oszustwa w czasie rzeczywistym, co ma kluczowe znaczenie w zapobieganiu oszustwom finansowym. W handlu detalicznym i marketingu, uczenie maszynowe pozwala na personalizację ofert dla klientów poprzez analizę zachowań zakupowych i preferencji, zwiększając satysfakcję klienta i efektywność sprzedaży. [4] W przemyśle, algorytmy te przyczyniają się do optymalizacji łańcuchów dostaw, analizując dane z różnych źródeł, jak prognozy pogody czy trendy rynkowe, co pomaga w przewidywaniu popytu i zarządzaniu zapasami oraz logistyką [5].

Można je też wykorzystać do wstępnego projektowania czy optymalizacji produktów. Innym, interesującym zastosowaniem uczenia maszynowego w Jeziorach Danych jest analiza obrazów. Algorytmy uczenia maszynowego są w stanie przetwarzać i analizować duże zbiory zdjęć czy obrazów, znajdując zastosowanie w takich dziedzinach jak diagnostyka medyczna, gdzie mogą pomagać w wykrywaniu i klasyfikowaniu zmian chorobowych na obrazach radiologicznych, czy w systemach bezpieczeństwa, gdzie analiza obrazu z kamer może służyć do identyfikacji i śledzenia obiektów lub osób.  

Podsumowanie

Artykuł ten zwraca uwagę na rozwój w obszarze analizy danych, podkreślając jak uczenie maszynowe, Jeziora Danych i inżynieria danych wpływają na sposób w jaki organizacje przetwarzają i wykorzystują informacje. Wprowadzenie tych technologii do biznesu ulepsza istniejące procesy oraz otwiera drogę do nowych możliwości. Data Engineering wprowadza modernizację w przetwarzaniu informacji, która charakteryzuje się większą precyzją, głębszymi wnioskami i bardziej dynamicznym podejmowaniem decyzji. To podkreśla rosnącą wartość inżynierii danych w nowoczesnym świecie biznesu, co jest ważnym czynnikiem w dostosowywaniu się do zmieniających się wymagań rynkowych i tworzeniu strategii opartych na danych. 

Bibliografia

[1] https://bfirst.tech/data-engineering/ 

[2] https://www.netsuite.com/portal/resource/articles/data-warehouse/data-lake.shtml 

[3] https://mitsloan.mit.edu/ideas-made-to-matter/machine-learning-explained 

[4] https://www.tableau.com/learn/articles/machine-learning-examples 

[5]https://neptune.ai/blog/use-cases-algorithms-tools-and-example-implementations-of-machine-learning-in-supply-chain 

Grać jak z nut – cz.3

W drugiej części artykułu stworzyliśmy harmonię utworu. Potrzebujemy teraz jakiejś dobrej melodii, która będzie do tej harmonii pasować. Melodie składają się z motywów, czyli małych fragmentów ok. 2-5 nutowych oraz ich wariacji (czyli przekształceń). Zaczniemy od wygenerowania pierwszego motywu – jego rytmu i dźwięków. Podobnie jak w przypadku generowaniu harmonii, skorzystamy ze statystyk, N-gramów, wyznaczonych na utworach muzycznych. Do przygotowania takich statystyk wykorzystamy bazę Essen Folksong Collection. Równie dobrze można skorzystać z dowolnej innej bazy melodii, taki wybór bazy będzie rzutować na to, jakiego rodzaju melodie będą generowane. Z każdego utworu trzeba wyodrębnić melodię, zamienić ją na ciąg wartości rytmicznych oraz ciąg dźwięków, a z tych  ciągów wyciągnąć statystyki. Przy tworzeniu statystyk dźwięków warto melodie najpierw  w pewien sposób przygotować –  przetransponować je wszystkie do dwóch tonacji, np. C-dur i c-moll. Zmniejszy to liczbę możliwych (prawdopodobnych) N-gramów 12-krotnie, a dzięki temu statystyki będą lepiej oszacowane.

Dobry motyw

Stworzenie pierwszego motywu zaczniemy od wygenerowania jego rytmu. Przypomnę tutaj, że przyjęliśmy wcześniej pewne uproszczenie – każdy z motywów i ich wariacji będzie trwać dokładnie jeden takt. Kolejne kroki generowania rytmu motywu: – losujemy pierwszą wartość rytmiczną z użyciem unigramów, – losujemy kolejną wartość rytmiczną z użyciem bigramów i unigramów – kontynuujemy losowanie kolejnych wartości rytmicznych, z użyciem N-gramów co raz wyższych rzędów (aż do 5-gramów), – przerywamy aż osiągniemy sumaryczną wartość rytmiczną równą długości jednego taktu – jeśli przekroczyliśmy długość 1 taktu, zaczynamy cały proces od początku (takie generowanie jest to na tyle szybkie, że możemy sobie pozwolić na taką niezbyt optymalną metodę prób i błędów).

Następny etap to wygenerowanie dźwięków motywu. Kolejnym uproszczeniem jakie wcześniej przyjęliśmy jest to, że generujemy utwory tylko w tonacji C-dur, dlatego skorzystamy ze statystyk N-gramów stworzonych na utworach przetransponowanych do tej tonacji, z wyłączeniem utworów w tonacjach molowych. Schemat działania jest podobny do tego przy generowaniu rytmu: – losujemy pierwszy dźwięk z użyciem unigramów, – losujemy kolejny dźwięk z użyciem bigramów i unigramów, – kontynuujemy aż wylosujemy tyle dźwięków, ile wylosowaliśmy wcześniej wartości rytmicznych – sprawdzamy, czy motyw pasuje do harmonii, jeśli nie to wracamy zaczynamy od początku – jeśli po ok. 100 próbach nie udało się wygenerować motywu pasującego do harmonii, to może oznaczać, że przy zadanej harmonii i zadanym rytmie jest bardzo małe prawdopodobieństwo wylosowania dźwięków, które będą pasować do harmonii. W takim przypadku cofamy się i generujemy nowy rytm motywu.

Generuj do skutku

Zarówno przy generowaniu rytmu motywu jak i generowaniu jego dźwięków stosujemy metodę prób i błędów. Będziemy ją też stosować w opisanym niżej generowaniu wariacji motywów. Choć taki sposób może się to wydawać “głupi”, to jest prosty i działa. Pomimo iż bardzo często takie losowo wygenerowane motywy nie pasują do harmonii, to możemy sobie pozwolić na wiele takich pomyłek. Nawet 1000 prób zajmuje krótki czas obliczeń na dzisiejszych komputerach, a wystarczy by znaleźć odpowiedni motyw.

Wariacje z powtórzeniami

Mamy pierwszy motyw, a następnie potrzebujemy dalszego ciągu melodii. Nie będziemy jednak cały czas generować nowych motywów, ponieważ utwór stałby się chaotyczny. Nie możemy także ciągle powtarzać tego samego motywu, ponieważ utwór stałby się zbyt nudny. Rozsądną drogą będzie oprócz powtórzeń motywów stworzyć także modyfikację tego motywu co zapewni zróżnicowanie, ale nie uczyni utworu chaotycznym.

Istnieje wiele metod tworzenia wariacji motywu. Jedną z nich jest transpozycja chromatyczna. Polega ona na tym, że wszystkie nuty transponowane są w górę lub dół o ten sam interwał. W takim przypadku zdarza się, że wariacja motywu posiada dźwięki spoza tonacji utworu. To z kolei powoduje, że szansa na to, że wariacja będzie pasować do harmonii jest bardzo mała. Kolejnym sposobem jest transpozycja diatoniczna, gdzie wszystkie nuty są transponowane o tę samą liczbę stopni skali. W przeciwieństwie do poprzedniej metody, wariacje diatoniczne nie posiadają dźwięków spoza tonacji.

Następnym sposobem jest zmiana jednego interwału – zmieniamy wtedy jeden z interwałów motywu pozostawiając wszystkie pozostałe interwały niezmienione. W ten sposób jedna część motywu (początek lub koniec) transponujemy (transpozycją chromatyczną lub diatoniczną). Inne metody to zamiana dwóch nut o tej samej wartości rytmicznej na jedną oraz zamiana jednej nuty na dwie nuty o tej samej wartości rytmicznej. W przypadku pierwszej metody, jeśli motyw posiada dwie nuty o tej samej wartości rytmicznej to możemy zmienić jego rytm i połączyć dwie takie nuty. W przypadku drugiej metody w sposób losowy wybieramy nutę, która zamieniamy na dwie „krótsze”.

Dzięki każdemu z opisanych sposobów tworzenia wariacji można wygenerować różne motywy. Wymienione metody nie są jedynymi obowiązującymi. Można ich wymyślić znacznie więcej. Jedyną zasadą ograniczającą w tym procesie jest to by wygenerowane wariacje nie różniły się za bardzo od oryginalnego motywu. W przeciwnym wypadku to już nie będzie wariacja tylko nowy motyw. Granica pomiędzy tym gdzie kończy się wariacja, a gdzie zaczyna już inny motyw jest umowna.

Itp. itd.

Metod do tworzenia wariacji motywów jest o wiele więcej, wymyślić można ich mnóstwo. Jedyne co nas ogranicza, to zasada, by wygenerowane wariacje nie różniły się za bardzo od oryginalnego motywu. W przeciwnym wypadku to już nie będzie wariacja, tylko nowy motyw. Granica pomiędzy tym gdzie kończy się wariacja a gdzie zaczyna już inny motyw jest raczej umowna i każdy trochę inaczej ją “czuje”, definiuje.

Czy to już koniec?

No to tyle jeśli chodzi o generowanie utworów. Podsumujmy więc kroki jakie przedsięwzięliśmy:

  1. Generacja harmonii utworu:
    • generacja rytmu harmonicznego,
    • generacja progresji akordów.
  2. Generacja melodii:
    • generowanie rytmu motywu,
    • generowanie dźwięków motywu,
    • tworzenie wariacji motywów,
    • tworzenie motywów i wariacji “aż do skutku”, czyli aż będą dopasowane do wygenerowanej harmonii

Pozostało nam jeszcze sprawienie by wygenerowane utwory miały zadaną, tj. dopasowaną do umiejętności grającego, trudność.

Sterowanie trudnością

Jednym z naszych założeń była możliwość sterowania trudnością utworu. Możemy to uzyskać dzięki dwóm podejściom:

  1. generowaniu utworów „jak leci” i sprawdzanie ich poziomów trudności (wg sposobów opisanych wcześniej); przygotowaniu w ten sposób dużej bazy utworów, z której następnie zostaną wybrane losowe utwory o zadanej trudności,
  2. sterowaniu parametrami tworzenia harmonii, motywów i wariacji tak by częściej generowały elementy muzyczne o zadanej trudności

Oba sposoby nie wykluczają się wzajemnie, dlatego możemy z powodzeniem stosować je razem. W pierwszej kolejności należy wygenerować losowo np. 1000 utworów, a następnie sterować parametrami tak by wytworzyć kolejne (ale tylko takie jakich nam brakuje). Odnośnie sterowania parametrami warto zaznaczyć, że można zmieniać prawdopodobieństwo powtórzenia się motywu. Dla utworów o zadanym niskim poziomie trudności nadane prawdopodobieństwo będzie większe (powtórzenia gra się łatwiej). Trudne utwory z kolei będą miały nadane większe prawdopodobieństwo oraz rzadziej spotykane harmonie (które wymuszą także rzadziej spotykane motywy i wariacje).

Grać jak z nut – cz. 2

W pierwszej części artykułu poznaliśmy bardzo dużo pojęć muzycznych i technicznych. Teraz czas je wykorzystać do zbudowania automatycznego kompozytora. Zanim jednak do tego przystąpimy, musimy przyjąć pewne założenia (a raczej uproszczenia):

  • utwory będą się składały z 8 taktów w budowie okresowej (poprzednik 4 takty, następnik 4 takty)
  • metrum będzie 4/4 (czyli 4 ćwierćnuty na takt, akcent na pierwszą i trzecią miarę taktu)
  • długość każdego motywu wynosi 1 takt (mimo że to wymaganie wydaje się restrykcyjne, jednak wiele popularnych utworów jest zbudowanych właśnie z motywów, które trwają 1 takt).
  • stosowana będzie tylko tonacja C-dur (w razie potrzeby zawsze można po wygenerowaniu utworu przetransponować go do dowolnej tonacji)
  • ograniczymy się do ok. 25 najczęściej stosowanych odmian stopni harmonicznych (stopni jest 7, ale część z nich ma kilka wersji, z dodatkowymi dźwiękami, które zmieniają barwę akordu).

Co jest potrzebne do stworzenia utworu?

Do stworzenia w automatyczny sposób prostego utworu muzycznego potrzebne nam jest:

  • wygenerowanie harmonii utworu – akordów i ich rytmu
  • stworzenie motywów – ich dźwięków (wysokości) i rytmu
  • stworzenie wariacji tych motywów – j.w.
  • połączenia motywów i wariacji w melodię, dopasowując je do harmonii

Po opanowaniu podstaw możemy przejść do pierwszej części automatycznego komponowania – generowania harmonii. Zacznijmy od stworzenia rytmu harmonii.

Wolny rytm

Choć można by się pokusić o stworzenie statystycznego modelu rytmu harmonicznego, to, niestety, (przynajmniej w chwili pisania tego artykułu) nie ma dostępnej bazy, która by to umożliwiła. Wobec powyższego, musimy poradzić sobie w inny sposób – sami wymyślmy taki model. W tym celu wybierzmy kilka “sensownych” rytmów harmonicznych i zadamy im jakieś “sensowne” prawdopodobieństwa.

rytmprawdopodobieństworytmprawdopodobieństwo
[8]0.2[2,2]0.1
[6, 2]0.1[2,1,1]0.02
[2, 6]0.1[3,1]0.02
[7, 1]0.02[1,1,1,1]0.02
[4]0.4[1,1,2]0.02
Tab1. Rytmy harmoniczne, wartości wyrażane w ćwierćnutach – [6, 2] oznacza rytm, w którym są dwa akordy, pierwszy trwa 6 ćwierćnut, a drugi 2 ćwierćnuty.


Rytmy w tabeli przedstawione są w postaci tego, jak długo akordy będą trwały, a długość trwania przedstawiona jest w liczbie ćwierćnut. Niektóre rytmy trwają dwa takty (np. [8], [6, 2]), a pozostałe jeden takt ([4], [1, 1, 2] itd.).

Generowanie rytmu harmonii przebiega w następujący sposób. Losujemy kolejne rytmy aż do momentu, gdy otrzymamy tyle taktów, ile potrzebowaliśmy (w naszym przypadku 8). Ze względu na to, że rytmy mają różną długość, czasami mogą wyniknąć z tego pewne komplikacje. Przykładowo, może zaistnieć taka sytuacja, że do zakończenia generacji będzie potrzebny ostatni rytm o długości 4 ćwierćnut, a my natomiast wylosujemy rytm o długości 8. W takim przypadku, aby uniknąć niepotrzebnych problemów, można wymusić losowanie z podzbioru rytmów o długości 4 ćwierćnut.

W takim razie, zgodnie z powyższymi ustaleniami, załóżmy, że wylosowaliśmy następujące rytmy:

  • poprzednik: [4, 4], [2, 2], [3, 1], 
  • następnik: [3, 1], [8], [2, 2]

Likelihood

W kolejnym kroku będziemy wykorzystywali pojęcie likelihood. Jest to nieznormalizowane do jedynki prawdopodobieństwo (tzw. pseudo-prawdopodobieństwo), które pomaga ocenić względny poziom prawdopodobieństwa różnych zdarzeń. Dla przykładu, jeżeli likelihoody zdarzeń A i B wynoszą odpowiednio 10 oraz 20, to oznacza, że zdarzenie B jest dwa razy bardziej prawdopodobne od zdarzenia A. Równie dobrze mogłyby te likelihoody wynosić 1 oraz 2, albo 0.005 oraz 0.01. Z likelihoodów można policzyć prawdopodobieństwo. Jeśli założymy, że jedynie zdarzenia A i B mogą wystąpić, to ich prawdopodobieństwa będą wynosić odpowiednio:

Obrazek posiada pusty atrybut alt; plik o nazwie Zasob-1.svg

Progresje akordów

Aby wygenerować prawdopodobne przebiegi harmoniczne najpierw przygotujemy sobie modele N-gramowe stopni harmonicznych. W tym celu skorzystamy z modeli n-gramów udostępnionych na githubie (https://github.com/DataStrategist/Musical-chord-progressions).

Nasz przykładzie będzie wykorzystywać 1-, 2-, 3-, 4- i 5-gramy.

W rytmie harmonii poprzednika jest 6 wartości rytmicznych, więc musimy przygotować przebieg 6 stopni harmonicznych. Pierwszy akord generujemy z użyciem unigramów (1-gramów). Przygotowujemy sobie zatem najpierw likelihoody dla każdego możliwego stopnia, a następnie losujemy z uwzględnieniem tych likelihoodów. Wzór na likelihood jest w tym przypadku dość prosty:

likelihoodX=p(X)

gdzie
X oznacza dowolny stopień harmoniczny
p(X) to prawdopodobieństwo 1-gramu X

My w tym przypadku wylosowaliśmy IV stopień (w tej tonacji F-dur).

Drugi akord generujemy z użyciem bigramów oraz unigramów, z wagą większą dla bigramów:

likelihoodX=waga2gramp(X v IV)+waga1gram*p(X)

gdzie:

  • p(X v IV) to prawdopodobieństwo przebiegu (IV, X)
  • wagaNgram to przyjęta waga N-gramu (im większa tym większy wpływ tego modelu n-gramowego, a mniejszy wpływ innych modeli)

Wagi n-gramów możemy przyjąć takie, jakie chcemy. Na potrzeby przykładu wybraliśmy takie:

n-gram12345
waga0.0010.010.115

Kolejny akord jaki wylosowaliśmy to: vi stopień (a-moll).

Generowanie trzeciego akordu przebiega podobnie, z tym że możemy już wykorzystać 3-gramy:

likelihoodX=waga3gramp(X v IV, vi)+waga2gramp(X v IV)+waga1gram*p(X)

I tak kontynuujemy, aż wygenerujemy wszystkie potrzebne akordy. W naszym przypadku wylosowaliśmy:

IV,  vi, I, iii, IV, vi (w przyjętej tonacji C-dur to są kolejno akordy F-dur, a-moll, C-dur, e-moll, F-dur, a-moll)

Nie jest to jakiś bardzo często spotykany przebieg akordów, ale jak się okazuje występuje w 5 popularnych piosenkach (https://www.hooktheory.com/trends#node=4.6.1.3.4.6&key=rel)

Podsumowanie

Udało nam się wygenerować rytmy i akordy, które są składowymi harmonii utworu. Należy tutaj jednak zwrócić jeszcze uwagę, że dla uproszczenia, nie wzięliśmy pod uwagę dwóch ważnych czynników:

  • Przebiegi harmoniczne poprzednika i następnika są bardzo często w jakiś sposób powiązane. Harmonia następnika może być identyczna do tej poprzednika lub ewentualnie lekko zmieniona, aby sprawiać wrażenie, że te dwa zdania są ze sobą w jakiś sposób powiązane.
  • Poprzednik i następnik kończą się prawie zawsze na konkretnych stopniach harmonicznych. Nie jest to ścisła reguła, ale niektóre stopnie harmoniczne są o wiele bardziej prawdopodobne od innych na końcach zdań muzycznych.

Na potrzeby przykładu można jednak uznać zadanie za zakończone. Harmonię utworu mamy już gotową, teraz należy jedynie stworzyć melodię do tej harmonii. W trzeciej części naszego artykułu można dowiedzieć się, jak właśnie taką melodię skomponować.

Nowe rozwiązania w komputerach stacjonarnych

Współczesny rynek technologiczny prężnie rozwija się w zakresie komputerów stacjonarnych. Firmy technologiczne próbują wyróżniać swoje produkty poprzez wprowadzanie do nich innowacyjnych rozwiązań. W ostatnim czasie duży rozgłos zyskał Mac M1 Ultra.

Nowy komputer od Apple, odznacza się przede wszystkim swoją wielkością i mobilnością. Zaprezentowany na początku marca produkt jest pełnoprawnym desktopem zamkniętym w obudowie o wymiarach 197 x 197 x 95 mm. Porównując to do kart graficznych Nvidii z serii RTX, np. Gigabyte GeForce RTX 3090 Ti 24GB GDDR6X, gdzie samo GPU ma wymiary 331 x 150 x 70 mm, okazuje się, że otrzymujemy cały komputer o rozmiarach karty graficznej. [4]

Apple M1 Ultra  - przedni panel
Rys. 1 – Apple M1 Ultra  – przedni panel [5]

Różnica w budowie

Rdzenie to fizyczne elementy procesora w których zachodzą procesy i obliczenia, im więcej rdzeni tym szybciej pracować będzie komputer. Proces technologiczny wyrażony w nm oznacza wielkość bramki tranzystora i przekłada się na zapotrzebowanie energii oraz ciepło generowane przez procesor. Zatem im mniejsza wartość jest wyrażona w nm, tym wydajniejszy jest procesor.

Procesor M1 Ultra ma 20 rdzeni i tyle samo wątków, a wykonany jest w technologii 5nm. [4][6] Dla porównania AMD oferuje maksymalnie 16 rdzeni i 32 wątki w technologii 7nm [7] (nowe procesory AMD z serii ZEN4 mają mieć technologię 5nm, jednak na  ten moment nie znamy dokładnej specyfikacji [3]) a Intel 16 rdzeni i 32 wątki w technologii 14nm [8]. Wobec powyższego, w teorii produkt od Apple ma znaczną przewagę nad konkurencją w kwestiach wydajności pojedynczego wątku. [Rys. 2]

Wydajność nowego komputera Apple

Według zapewnień producenta, GPU od Apple miało przewyższać najlepszą, na tamten moment, dostępną kartę graficzną – RTX 3090.

Wykres  wydajności procesora od ilości zużytego prądu
Rys. 2 – Wykres  wydajności procesora od ilości zużytego prądu [9] . Wykres pokazany przez Apple podczas prezentacji nowego produktu

Zintegrowana karta graficzna miała zapewniać lepszą wydajność przy zużyciu ponad 200W mniej mocy. [Rys. 3] Po premierze, użytkownicy sprawdzili jednak szybko zapewnienia producenta i okazało się, że RTX znacznie przewyższa w testach benchmarkowych produkt Apple.

Wykres wydajności karty graficznej od ilości zużytego prądu
Rys. 3 – Wykres wydajności karty graficznej od ilości zużytego prądu [9]. Wykres pokazany przez Apple podczas prezentacji nowego produktu. Porównany z RTX 3090

Problemem jest to, że te benchmarki w większości wykorzystują programy niezoptymalizowane pod Mac OS, przez co produkt Apple nie wykorzystuje całości swojej mocy. W testach wykorzystujących całą moc GPU M1 Ultra wypada bardzo podobnie do swojego dedykowanego rywala. Niestety nie wszystkie aplikacje są napisane pod system operacyjny Apple, co mocno ogranicza zastosowania, w których wykorzystamy pełną moc komputera.[10]

Na poniższym wykresie zostało przedstawione porównanie liczby klatek na sekundę w “Shadow of the Tomb Raider” z 2018 roku. [Rys. 4] Im więcej klatek tym płynniejszy jest obraz. [2]

Liczba klatek na sekundę w grze z serii Tomb Raider
Rys. 4 – Liczba klatek na sekundę w grze z serii Tomb Raider (im więcej tym lepiej)[2]

Pobór energii nowego Mac Studio M1 Ultra w porównaniu do standardowych PC

Pomimo dużej mocy obliczeniowej, nowy produkt Apple jest bardzo energooszczędny. Producent podaje, że jego maksymalny ciągły pobór mocy wynosi 370W. Standardowe PC na współczesnych podzespołach nie schodzą poniżej 500W a rekomendowana moc dla sprzętu z najlepszymi częściami wynosi 1000W [Tab. 1] ( Nvidia GeForce RTX 3090 Ti + AMD R7/9 lub Intel i7/9 ).  

Intel i5
AMD R5
Intel i7
AMD R7
Intel i9 K
AMD R9
NVIDIA RTX 3090 Ti850W1000W1000W
NVIDIA RTX 3090 750W850W850W
NVIDIA RTX 3080 Ti750W850W850W
NVIDIA RTX 3080 750W850W850W
NVIDIA RTX 3070 Ti750W850W850W
NVIDIA RTX 3070 650W750W750W
Lower graphic cards650W650W650W
Tab. 1 – Tabela rekomendowanej mocy zasilacza zależnie od użytego procesora i karty graficznej. W kolumnach procesory AMD i Intel, w wierszach karty graficzne NVIDIA z serii RTX. [1]

Oznacza to znacznie mniejsze koszty utrzymania takiego komputera. Zakładając, że nasz komputer pracuje 8h dziennie i średni koszt kWh na poziomie 0,77 PLN, otrzymujemy oszczędność na poziomie 1500 zł rocznie. W krajach, które nie są zasilane zieloną energią oznacza to również mniejszą ilość zanieczyszczeń.

Problemy produktu od Apple

Produkty od Apple mają dedykowany software, co oznacza lepszą kompatybilność z hardware i przekłada się na lepszą wydajność, ale oznacza też, że dużo programów nie napisanych pod Mac OS nie jest w stanie całkowicie wykorzystać potencjału M1 Ultra. Produkt nie pozwala na korzystanie z dwóch systemów operacyjnych lub samodzielne zainstalowanie Windowsa/Linuxa. Okazuje się więc, że to co pozwala M1 Ultra osiągnąć tak dobre wyniki w niektórych warunkach, jest też powodem przez który nie jest w stanie konkurować wydajnością w innych programach. [10]

Podsumowanie

Apple M1 Ultra jest silnym komputerem w małej obudowie. Technologia 5nm zapewnia najlepszą energooszczędność wśród produktów aktualnie dostępnych na rynku. Jednak przez swoją niską kompatybilność i wysoką cenę nie zastąpi standardowych komputerów. Aby uzyskać maksymalną wydajność potrzebne są programy dedykowane pod system operacyjny Apple. Decydując się na ten komputer trzeba to mieć na myśli. Z tego powodu, pomimo wielu zalet jest to raczej produkt przeznaczony dla profesjonalnych grafików, muzyków lub edytorów wideo.

Bibliografia

[1] https://www.msi.com/blog/we-suggest-80-plus-gold-1000w-and-above-psus-for-nvidia-geforce-rtx-3090-Ti

[2] https://nano.komputronik.pl/n/apple-m1-ultra/

[3] https://www.tomshardware.com/news/amd-zen-4-ryzen-7000-release-date-specifications-pricing-benchmarks-all-we-know-specs

[4] https://www.x-kom.pl/p/730594-nettop-mini-pc-apple-mac-studio-m1-ultra-128gb-2tb-mac-os.html

[5] https://dailyweb.pl/apple-prezentuje-kosmicznie-wydajny-mac-studio-z-nowym-procesorem-m1-ultra/

[6] https://geex.x-kom.pl/wiadomosci/apple-m1-ultra-specyfikacja-wydajnosc/

[7] https://www.amd.com/pl/partner/ryzen-5000-series-desktop

[8] https://www.cpu-monkey.com/en/

[9] https://www.apple.com/pl/newsroom/2022/03/apple-unveils-m1-ultra-the-worlds-most-powerful-chip-for-a-personal-computer/

[10] https://youtu.be/kVZKWjlquAU?t=301

Chmura obliczeniowa a środowisko

Termin chmury obliczeniowej trudno jest jednoznacznie zdefiniować. Inne podejście do chmury będą miały przedsiębiorstwa czy osoby prywatne. Zwykle mówimy o chmurze obliczeniowej jako o sieci dostępnych na żądanie zasobów serwerowych – mocy obliczeniowej oraz przestrzeni dyskowej, ale również i oprogramowania – dostarczanych przez zewnętrzne podmioty, czyli tzw. dostawców chmury (ang. cloud provider). Dostarczane zasoby są dostępne przez Internet oraz zarządzane przez dostawcę, eliminując tym samym wymóg kupowania sprzętu oraz bezpośredniego zarządzania fizycznymi serwerami przez firmy. Dodatkowo, chmura jest rozproszona na wiele centrów danych w wielu rejonach świata, dzięki czemu możemy liczyć na mniejszą awaryjność oraz większą dostępność naszych usług [1].

Podstawowe działanie chmury

Zasoby dostępne w chmurze są współdzielone przez wielu klientów, dzięki czemu można lepiej wykorzystać dostępną moc obliczeniową oraz przy odpowiednim użyciu, może okazać się ona korzystniejsza cenowo. Takie podejście do współdzielenia zasobów może budzić pewne obawy, jednak dzięki wykorzystaniu technologii wirtualizacji, chmura zapewnia wyższe bezpieczeństwo niż w klasycznym modelu obliczeniowym. Wirtualizacja pozwala na tworzenie symulowanych komputerów, tzw. maszyn wirtualnych, które zachowują się tak jak ich fizyczne odpowiedniki, jednak znajdują się na jednym serwerze i są od siebie w pełni odizolowane. Współdzielenie zasobów i wirtualizacja pozwalają na efektywne wykorzystanie sprzętu oraz ostatecznie ograniczenie poboru prądu przez serwerownie. Oszczędności finansowe możemy natomiast odczuć ze względu na powszechnie stosowany przez dostawców model biznesowy “pay-as-you-go” polegający na rozliczaniu użytkowników za faktycznie wykorzystane zasoby (np. za minuty czy nawet sekundy wykorzystanego czasu obliczeniowego) w przeciwieństwie do stałego abonamentu. 

Samo określenie “chmury” zapoczątkowało się jako termin slangowy. Często na schematach technicznych infrastrukturę sieciową i serwerową reprezentujemy jako ikonę chmury [2]. Aktualnie “chmura obliczeniowa” jest powszechnie przyjętym określeniem w środowisku IT oraz popularnym modelem obliczeniowym. Przystępność cenowa chmury oraz brak konieczności samodzielnego zarządzania nią, sprawia, że ten model obliczeniowy jest coraz częściej wybierany przez firmy informatyczne, co pozytywnie przekłada się na aspekty środowiskowe [3].

Mniejsze zużycie energii elektrycznej 

Wzrastające zapotrzebowanie na rozwiązania z obszaru IT niesie za sobą równocześnie większe zapotrzebowanie na energię elektryczną – zasób strategiczny z punktu widzenia utrzymania chmury. Utrzymywanie swojej własnej serwerowni w przedsiębiorstwie wiąże się jednak z ogromnymi nakładami energetycznymi, które generuje nie tylko sam sprzęt komputerowy, ale także system do chłodzenia serwerowni. 

Wbrew pozorom większe serwerownie, które przeliczają na raz ogromne ilości danych są bardziej przyjazne środowisku niż lokalne serwerownie w przedsiębiorstwach [4]. Według badań Accenture, przeniesienie własności przedsiębiorstwa do chmury może zredukować zużycie energii nawet o prawie 65%. Jest to wynikiem tego, że największe rozwiązania chmurowe budowane są zazwyczaj w przeznaczonym do tego miejscu, co pozwala na lepszą organizację infrastruktury i zarządzanie zasobami [5]. Dostawcy dużych usług chmurowych mogą z wyprzedzeniem zaplanować system chłodzenia, który będzie dawać najlepsze efekty. Dodatkowo dysponują nowoczesnym, często dużo wydajniejszym prądowo sprzętem niż przeciętna serwerownia. W badaniach przeprowadzonych w 2019 roku, stwierdzono, że chmura AWS była 3,6 razy bardziej efektywna pod względem wykorzystywanej energii niż mediana badanych centrów danych przedsiębiorstw w USA [6].

Co więcej, ze względu na to, że chmura jest środowiskiem współdzielonym, można efektywnie sterować mocą. Skala użytkowników jednej chmury obliczeniowej pozwala na bardziej rozważne rozdysponowanie zużywanej energii pomiędzy poszczególnymi przypadkami. Zrównoważone zarządzanie zasobami umożliwia również nasz produkt Data Engineering, który zbiera i analizuje dane w celu maksymalizacji wydajności i efektywności pracy.

Zmniejszenie emisji szkodliwych substancji

Poprzez budowę centrów przetwarzania danych, które korzystają z ekologicznych źródeł energii oraz opierają się na niskoemisyjnych rozwiązaniach, można chociażby kontrolować emisję dwutlenku węgla i innych gazów mających wpływ na efekt cieplarniany. Zgodnie z danymi z raportu “The Green Behind Cloud” [7] migracje do chmury publicznej mogą zredukować globalną emisję dwutlenku węgla o 59 mln ton rocznie, co jest porównywalne do usunięcia 22 milionów samochodów z drogi.

Warto również zainteresować się migracją do dostawców mających na uwadze swój ślad węglowy. Dla przykładu chmura firmy Google jest w pełni neutralna pod względem emisji dwutlenku węgla wykorzystując energię odnawialną, a od roku 2030 zobowiązuje się do wykorzystywania wyłącznie energii bezemisyjnej przez całą dobę we wszystkich centrach danych [8]. Chmura Azure firmy Microsoft jest neutralna emisyjnie od 2012 roku, a klienci mogą śledzić emisję swoich usług w specjalnie przygotowanym kalkulatorze [9].

Redukcja hałasu związanego z użytkowaniem sprzętu IT 

Hałas klasyfikowany jest jako zanieczyszczenie środowiska. Mimo że na pierwszy rzut oka wydaje się on całkiem niepozorny i nieszkodliwy, ma on negatywny wpływ na zdrowie człowieka i jakość środowiska. W odniesieniu do człowieka, zwiększa on ryzyko chorób takich jak nowotwór, zawał serca czy nadciśnienie. Z kolei z perspektywy środowiskowej ma on wpływ na zmianę zachowania zwierząt, migracji ptaków czy też ich reprodukcję.

Głównym źródłem hałasu w rozwiązaniach przechowywania danych w serwerach w firmie jest specjalny system chłodzenia, który pozwala utrzymać odpowiednią temperaturę w serwerowni. Wykorzystanie rozwiązań chmurowych pozwala zredukować emitowany hałas przez urządzenia chłodzące w miejscach pracy, co w konsekwencji przyczynia się do zmniejszenia zanieczyszczenia środowiska hałasem.

Jeśli chcesz dowiedzieć się więcej o dostępnych rozwiązaniach pozwalających na redukcję hałasu przemysłowego, sprawdź nasz produkt Intelligent Acoustics.

Redukcja poziomu odpadów 

Zastosowanie chmury obliczeniowej w swojej działalności, w przeciwieństwie do posiadania tradycyjnych serwerów w zasobach firmowych, wpływa również na zmniejszenie ilości produkowanych odpadów komputerowych. Wynika to głównie z faktu, iż chmura obliczeniowa nie wymaga zakupu dodatkowego wyposażenia czy też przygotowania infrastruktury do serwerowni w firmie, co w późniejszej perspektywie ogranicza ilość sprzętu do utylizacji.  

Ponadto, stosowane mechanizmy wirtualizacji, polegające na zastępowaniu większej liczby serwerów z małą mocą obliczeniową na mniejsze ilości serwerów, które później skuteczniej wykorzystują ową moc, optymalizują i zwiększają wydajność serwera, a to w rezultacie zmniejsza zapotrzebowanie na zasoby sprzętowe.  

Podsumowanie 

Aktualnie działanie zrównoważone jest ważnym czynnikiem przy wyborze technologii. Ochrona środowiska staje się dla firm, a także producentów urządzeń sieciowych czy telekomunikacyjnych, sprawą priorytetową, co przekłada się na szukanie bardziej ekologicznych rozwiązań. Chmura obliczeniowa zdecydowanie wpisuje się w ten trend. Nie tylko przyczynia się do ograniczenia zużycia zasobów sprzętowych, energetycznych, a także redukuje emisję szkodliwych substancji do ekosystemu czy emitowany hałas do środowiska.  

Bibliografia

[1] https://www.wit.edu.pl/dokumenty/wydawnictwa_naukowe/zeszyty_naukowe_WITZ_06/0006_Joszczuk-Januszewska.pdf 

[2] https://rocznikikae.sgh.waw.pl/p/roczniki_kae_z36_21.pdf 

[3] http://yadda.icm.edu.pl/yadda/element/bwmeta1.element.ekon-element-000171363539  

[4] Paula Bajdor, Damian Dziembek “Środowiskowe i społeczne efekty zastosowania chmury obliczeniowej w przedsiębiorstwach”, 2018 

[5] https://www.accenture.com/_acnmedia/PDF-135/Accenture-Strategy-Green-Behind-Cloud-POV.pdf  

[6] “Reducing carbon by moving to AWS” https://www.aboutamazon.com/news/sustainability/reducing-carbon-by-moving-to-aws

[7] https://www.accenture.com/us-en/insights/strategy/green-behind-cloud

[8] “Operating on 24/7 Carbon-Free Energy by 2030.” https://sustainability.google/progress/energy/

[9] https://www.microsoft.com/en-us/sustainability/emissions-impact-dashboard