Poznaj nasz zespół w San Diego, Stany Zjednoczone, od wtorku 22 do czwartku 25 kwietnia na XPONENTIAL, stoisko 4700

Aktualizacja (13 / 04 / 2024): Posiadamy duży zapas wszystkich naszych produktów, znajdziesz nas również w i    Kup teraz

Poznaj nasz zespół w San Diego, Stany Zjednoczone, od wtorku 22 do czwartku 25 kwietnia na XPONENTIAL, stoisko 4700

Użyj Copilot, aby wygenerować kod AI

„Każda wystarczająco zaawansowana technologia jest nie do odróżnienia od magii”. Arthur C. Clarke

W Sieć neuronowa SBC po tym, jak widzieliśmy sieć wag 1 tys. wytrenowaną z 10 tys. próbek w celu przybliżenia funkcji sinus. W tym poście użyjemy ciężarków 175G wytrenowanych z próbek 450G, które mogą programować lepiej niż przeciętny programista. Rozmiary tych modeli są imponujące, ale tak naprawdę nikt tak naprawdę nie wie, jak działają i jakie są ich ograniczenia.

GitHub Copilot to narzędzie AI, które przyspiesza tworzenie oprogramowania, pozwalając programiście robić wiele rzeczy, które wcześniej były niemożliwe. Na początku podobne wydaje się korzystanie ze StackOverflow, serwisu, na którym programiści wysyłają pytania, gdy nie wiedzą, jak coś zrobić, ale Copilot idzie znacznie dalej, jest w stanie zsyntetyzować nową odpowiedź na nasz problem.

Copilot jest zawarty w Microsoft Visual Studio Code i stale sugeruje kody w kolorze szarym, które można zaakceptować, naciskając przycisk tabulatora. Ten sugerowany kod można z grubsza zdefiniować jako „najczęstsze” dopasowanie między zapytaniem (Twój kod) a zbiorem danych treningowych (kod GitHub).

1 przykład

W tym przykładzie definiujemy naszą funkcję i jej docstring i prosimy drugiego pilota o uzupełnienie. Jak widzimy, uzupełnienie odpowiada łańcuchowi dokumentacyjnemu. Pierwsza intuicja jest taka, że ​​Copilot działa jak wyszukiwarka i po prostu dopasowuje zapytanie do swojego zestawu danych szkoleniowych (150 GB projektów open source), ale tak nie działa.

2 przykład

Tutaj tworzymy losowy/zwariowany ciąg, który nie może znajdować się w zestawie treningowym. Wynik nadal wygląda na najbardziej spójne rozwiązanie, jakie można podać, w tym przypadku: sumę parametrów wejściowych.

3 przykład

W tym przykładzie prosimy (po hiszpańsku) o zsumowanie obszaru przecięcia dwóch okręgów, biorąc pod uwagę jego środek i promień. Copilot bez problemu rozumie tekst w języku hiszpańskim i sugeruje nazwę funkcji, jej parametry oraz całą treść funkcji. Po krótkim przeglądzie wygląda na to, że kod powinien działać.

4 przykład

Teraz tworzymy hipotetyczny tekst pytania/odpowiedzi. Dzięki temu Copilot dopasowuje zapytanie do niektórych egzaminów, które mogą znajdować się w tym uczącym zbiorze danych. Po prostu pytamy o stolicę Hiszpanii, a drugi pilot generuje poprawną odpowiedź.

5 przykład

Jeśli jednak zapytamy o nieistniejący kraj, Copilot również udzieli najlepszej odpowiedzi, która również wygląda na „poprawną”.

6 przykład

W tym przykładzie odwracamy proces, dajemy odpowiedź, aby spróbować wygenerować pytanie. Drugi pilot generuje pytanie, którego się nie spodziewaliśmy. Spodziewaliśmy się „Jaka jest stolica Francji?”. a drugi pilot zapytał „Jaki jest wynik następującego kodu?” ale nadal możemy zrozumieć poprawną sugestię.

7 przykład

Tutaj zmuszamy drugiego pilota do pytania o to, co chcemy zmienić na bardziej powszechny język i dodać pierwszą literę. Generuje jednak kolejne pytanie, tym razem całkowicie błędne i nie ma żadnego związku z odpowiedzią.

Podsumowując, drugi pilot:

  • Buduje sugestię na podstawie najczęstszego rozwiązania.
  • Zwykle jest poprawny, jeśli zapytanie ma sens.
  • Zwykle jest błędny, gdy zapytanie wygląda na częsty problem, ale tak nie jest i ma zupełnie inny cel.

Drugi pilot przy użyciu bibliotek open source

Drugi pilot został przeszkolony w zakresie projektów open source. Zawiera miliony przypadków użycia dowolnej biblioteki open source, takiej jak numpy, opencv, qt… To sprawia, że ​​Copilot jest naprawdę użyteczny, ponieważ pomaga programiście w najczęstszych sugestiach, które zwykle są najlepsze.

8 przykład

W tym przykładzie używamy test jednostkowy python, a Copilot wie, że test jednostkowy.Przypadek testowy ma metodę o nazwie AssertEqual i też to wie foo( 1, 2 ) powinna wynosić 3.

9 przykład

Powyżej tworzymy bardziej złożony bla (której zakładamy, że nie może być w danych uczących), aby sprawdzić, czy Copilot naprawdę rozumie kod. Po uruchomieniu kodu z 17 przypadkami testowymi, tylko 6 nie powiodło się, dając 65% współczynnik sukcesu.

Może się wydawać, że to niewiele, ale pamiętaj, że Copilot nie jest interpreterem Pythona, nie wykonał funkcji, aby uzyskać jej dane wyjściowe… Copilot wykorzystał to, czego nauczył się podczas szkolenia, aby przekonwertować nasze zapytanie na dane wyjściowe, które mają idealną składnię Pythona i działa również dobrze w 65% przypadków.

10 przykład

Można by oczekiwać, że długi tekst wejściowy spowoduje niepowodzenie drugiego pilota, ale tak się nie stanie, im więcej informacji podajemy, tym lepsze odpowiedzi może wygenerować drugi pilot.

W powyższym przykładzie prosimy o złożone zadanie, kompletny program, który wymaga różnych umiejętności do rozwiązania, takich jak: umiejętności programowania w Pythonie, biblioteki specyficzne dla micropythona i jak ich poprawnie używać, nawet w zrozumieniu ludzkiego tekstu.

Pełna podpowiedź jest wyświetlana w następnej komórce. Zauważ, że bardzo dobrze pasuje do opisu programu. Klasa aplikacji ma sens, a nawet biblioteki micropython (PIN, UART, ADC, PIN.irq…) są poprawnie używane. Na przykład w tym przypadku nie jest w 100% idealne temp_senor jest obiektem ADC, który nie posiada temp_sensor.init() metody i inne małe błędy mogą zostać wygenerowane, ale cała struktura programu jest zdecydowanie poprawna, a małe błędy można łatwo naprawić.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
importować czas
importować maszyna

klasa wideo LumaTouch:
    def __init__(samego siebie):
        samego siebie.przycisk = maszyna.Szpilka(0maszyna.szpilka.W)
        samego siebie.czujnik_temperatury = maszyna.ADC (maszyna).Szpilka(1))
        samego siebie.uart = maszyna.UART(1, 115200)
        samego siebie.uart.w tym(115200, bity=8, parzystość=żaden, zatrzymać=1)
        samego siebie.ostatnie wydarzenie = 0
        samego siebie.ostatnia_temp = 0
        samego siebie.ostatni raz = 0
        samego siebie.przycisk.irq(wyzwalacz=maszyna.szpilka.IRQ_FALLING, obsługa=samego siebie.przycisk_naciśnięty)
        samego siebie.przycisk.irq(wyzwalacz=maszyna.szpilka.IRQ_RISING, obsługa=samego siebie.button_release)
        samego siebie.czujnik_temperatury.w tym()

    def button_wciśnięty(samego siebie, szpilka):
        samego siebie.ostatnie wydarzenie = 1
        samego siebie.ostatni raz = czas.kleszcze_ms()
        samego siebie.uart.napisz(b'{},{},{}\n'.format(samego siebie.ostatni raz, samego siebie.ostatnie wydarzenie, samego siebie.ostatnia_temp))

    def przycisk_zwolniony(samego siebie, szpilka):
        samego siebie.ostatnie wydarzenie = 0
        samego siebie.ostatni raz = czas.kleszcze_ms()
        samego siebie.uart.napisz(b'{},{},{}\n'.format(samego siebie.ostatni raz, samego siebie.ostatnie wydarzenie, samego siebie.ostatnia_temp))

    def odczyt_temp(samego siebie):
        samego siebie.ostatnia_temp = samego siebie.czujnik_temperatury.czytać()
        samego siebie.uart.napisz(b'{},{},{}\n'.format(samego siebie.ostatni raz, samego siebie.ostatnie wydarzenie, samego siebie.ostatnia_temp))
    
    def biegać(samego siebie):
        Podczas Prawdziwy:
            samego siebie.read_temp() czas.spać(0.1)

11 przykład

Na koniec w poniższym przykładzie używamy Copilot, aby dodać komentarze do poprzedniego kodu. Kopiujemy klasę dwukrotnie i dodajemy przewodnik do Copilot, taki jak „Docstringowa wersja powyższej klasy”. Drugi pilot generuje klasę i komentarze dla każdej linii.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# Docstringowa wersja powyższej klasy
klasa wideo LumaTouch:
    """ Krótki:
        Jest to prosta aplikacja, która odczytuje czujnik temperatury i przesyła dane do UART.
        Dane przesyłane są w formacie:
        czas, wydarzenie, temp
        Czas to czas w milisekundach od uruchomienia aplikacji.
        Zdarzeniem jest 1 w przypadku naciśnięcia przycisku i 0 w przypadku zwolnienia przycisku.
        Temperatura to temperatura w stopniach Celsjusza.
    "" "
    def __init__(samego siebie):
        # Utwórz obiekt przycisku
        samego siebie.przycisk = maszyna.Szpilka(0maszyna.szpilka.W)
        # Utwórz obiekt czujnika temperatury
        samego siebie.czujnik_temperatury = maszyna.ADC (maszyna).Szpilka(1))
        # Utwórz obiekt UART
        samego siebie.uart = maszyna.UART(1, 115200)
        # Zainicjuj obiekt UART
        samego siebie.uart.w tym(115200, bity=8, parzystość=żaden, zatrzymać=1)
        # Utwórz zmienną do przechowywania ostatniego zdarzenia
        samego siebie.ostatnie wydarzenie = 0
        # Utwórz zmienną do przechowywania ostatniej temperatury
        samego siebie.ostatnia_temp = 0
        # Utwórz zmienną do przechowywania po raz ostatni
        samego siebie.ostatni raz = 0
        # Zarejestruj naciśnięty przycisk obsługi zdarzeń
        samego siebie.przycisk.irq(wyzwalacz=maszyna.szpilka.IRQ_FALLING, obsługa=samego siebie.przycisk_naciśnięty)
        # Zarejestruj program obsługi zdarzeń zwolniony przycisk
        samego siebie.przycisk.irq(wyzwalacz=maszyna.szpilka.IRQ_RISING, obsługa=samego siebie.button_release)
        # Zainicjuj czujnik temperatury
        samego siebie.czujnik_temperatury.w tym()

    def button_wciśnięty(samego siebie, szpilka):
        # Ustaw ostatnie wydarzenie na 1
        samego siebie.ostatnie wydarzenie = 1
        # Ustaw ostatni czas na aktualny czas
        samego siebie.ostatni raz = czas.kleszcze_ms()
        # Wyślij ostatni czas, ostatnie zdarzenie i ostatnią temperaturę do UART
        samego siebie.uart.napisz(b'{},{},{}\n'.format(samego siebie.ostatni raz, samego siebie.ostatnie wydarzenie, samego siebie.ostatnia_temp))

    def przycisk_zwolniony(samego siebie, szpilka):
        # Ustaw ostatnie wydarzenie na 0
        samego siebie.ostatnie wydarzenie = 0
        # Ustaw ostatni czas na aktualny czas
        samego siebie.ostatni raz = czas.kleszcze_ms()
        # Wyślij ostatni czas, ostatnie zdarzenie i ostatnią temperaturę do UART
        samego siebie.uart.napisz(b'{},{},{}\n'.format(samego siebie.ostatni raz, samego siebie.ostatnie wydarzenie, samego siebie.ostatnia_temp))

    def odczyt_temp(samego siebie):
        # Ustaw ostatnią temperaturę na aktualną temperaturę
        samego siebie.ostatnia_temp = samego siebie.czujnik_temperatury.czytać()
        # Wyślij ostatni czas, ostatnie zdarzenie i ostatnią temperaturę do UART
        samego siebie.uart.napisz(b'{},{},{}\n'.format(samego siebie.ostatni raz, samego siebie.ostatnie wydarzenie, samego siebie.ostatnia_temp))
    
    def biegać(samego siebie):
        Podczas Prawdziwy:
            # Odczytaj temperaturę
            samego siebie.odczyt_temp()
            # Poczekaj 0.1 sekundy
            czas.spać(0.1)

Jeśli podobały Ci się te treści, możesz nas śledzić Twitter, YouTube, Facebook or LinkedIn aby być na bieżąco z takimi treściami.

Chcesz dowiedzieć się więcej o GPS/RTK?

1. Nasz zespół inżynierów skontaktuje się z Tobą w celu rozwiązania wszelkich pytań
2. Będziemy na bieżąco informować Cię o promocjach i nowościach produktowych
3. Dowiesz się od nas tylko wtedy, gdy będziemy mieć ważne wiadomości, nie będziemy spamować Twojego e-maila