Teknologian jakaminen

Taso 1: Linuxin perustiedot

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Esipuhe

Tämä artikkeli on Shanghain tekoälylaboratorion isännöimän kolmannen laajamittaisen malliharjoitusleirin muistiinpanot.Opetusohjelman alkuperäinen linkki
Rekisteröityäksesi etsi "The Third Scholar Model Practice Camp" WeChatissa.
Tämä muistiinpano on henkilökohtaisesti merkitty muistiinpano, jota on muokattu alkuperäisen opetusohjelman perusteella.

Linux+InternStudio-taso

😀Hello大家好,欢迎来到Scholar iso malliKäytännön leiri, tässä on käytännön leirin valmistelema peruskurssi opiskelijoille, jotka osallistuvat käytännön leirille ensimmäistä kertaa, sekä eri alojen opiskelijoille, joilla ei ole perustietoja LinuxistaInternStudio kehityskone, ja hallitse joitakin perusasioitaLinuxin tuntemus , jotta kaikilla ei ole aavistustakaan, mistä aloittaa seuraavilla kursseilla. Toivon, että siitä on apua kaikille. Olemme laatineet sinulle tasotehtäviä täällä Kun suoritat vaaditut tasotehtävät ja kirjaudut sisään, saat nykyisen tason laskentatehopalkinnon.aloitetaan!

1. Johdatus InternStudio-kehityskoneeseen

InternStudio 是大模型时代下的云端算力平台。基于 InternLM 组织下的诸多算法库支持,为开发者提供开箱即用的大语言模型微调环境、工具、数据集,并完美兼容 🤗 HugginFace 开源生态。

Jos haluat tietää lisää InternStudiosta, voit tarkistaa seuraavat asiakirjat: InternStudio

https://studio.intern-ai.org.cn/

Avaa ensin yllä oleva linkki siirtyäksesi InternStudioon Kirjautumisen jälkeen siirryt automaattisesti konsolin käyttöliittymään alla olevan kuvan mukaisesti:

Lisää kuvan kuvaus tähän

Kerron teille kutakin sarjanumeroa vastaavien sivujen toiminnot:

  1. Täällä voit luodaKehityskone, sekä muokata kehityskoneen kokoonpanoa ja tarkastella liittyviä lokeja jne.

Lisää kuvan kuvaus tähän

  1. OK tässäVisualisointi Tarkastele tiedostoja ja kansioita kehityskoneessa Jos luot kaksi kehityskonetta, ne käyttävät samaa pilvilevyä. (Koska jokainen kehityskone on Docker-kontti, yksi tallennuspilvilevy on asennettu. Ammatillisten termien selitykset: Ammatillisten termien selitys) Täällä voit ladata tiedostoja tai kansioita, luoda tiedostoja ja tarkastella piilotettuja tiedostoja.

Lisää kuvan kuvaus tähän

  1. Tämä on kehityskoneen uusi toiminto Jos haluat tehdä projektin, voit hakea resursseja assistentiltaJaetut laskentaresurssit,避免造成资源浪费。(毕竟烧的可都是💴啊)
  2. Tätä käytetään konfigurointiinSSH-avain, puhumme sen käytöstä myöhemmin.
  3. Viimeinen paikka on henkilökohtaisten tietojen muokkaaminen ja tietojesi tarkistaminenLaskentaresurssiterityiseen käyttöön.

Yllä oleva on lyhyt esittely InternStudio-alustaan. Katsotaanpa kuinka luodaan kehityskone. Menemme kotisivulle ja napsautamme ".Luo kehityskone

Lisää kuvan kuvaus tähän

Täällä valitsemme luomisenhenkilökohtaisen kehityksen kone, nimettytestataCudaVersio on 12.2,Resurssien kohdentaminenValitse 10 % ja oletuskesto on hyvä.

Kun luominen on valmis, sisäänKehityskoneNäet juuri luomasi kehityskoneen käyttöliittymässä napsauttamalla.

Lisää kuvan kuvaus tähän

Kehityskoneeseen siirtymisen jälkeen näet kehityskoneen pääsivun. Kehityskoneessa on kolme tilaa:JupyterLab, pääte ja VScode

Lisää kuvan kuvaus tähän

sisään:

  1. JupyterLab: Interaktiivinen ohjelmointi- ja opetusympäristö, jossa on sisäänrakennettu pääte, joka voi helposti tarkastella tiedostoja, suorittaa koodia jne.
  2. terminaali(Terminaali, kevyin): Käytetään pääasiassa komentorivitoimintoihin tai komentosarjojen ja yksinkertaisten ohjelmien suorittamiseen
  3. VSCode: Web-sivulle integroitua VSCodea voidaan kehittää myös etäyhteyden kautta paikallisessa VSCodessa. Seuraavassa selitetään kuinka etäyhteys määritetään.

Lisää kuvan kuvaus tähän

  1. Tämä on resurssien käyttöä, jota käytetään seuraavilla kursseilla.

2. SSH ja porttikartoitus

Esittelimme ylläInternStudio-alusta, ja kuinka luodaan kehityskone Tässä osiossa haluamme ymmärtää mitäSSHMiksi käyttää etäyhteyttä, Kuinka käyttää SSH:taetäyhteysKehityskone, mikä onPorttikartoitusja miten edetäPorttikartoitus

2.1 Mikä on SSH?

SSHKoko nimi on Secure Shell, joka on käännetty kiinaksi suojatukseksiverkon suojausprotokolla , toteuttaa suojatun pääsyn ja tiedostonsiirron sekä muut palvelut salaus- ja todennusmekanismien avulla. SSH-protokolla tarjoaa suojattuja verkkopalveluita turvattomassa verkkoympäristössä salaamalla ja todentamalla verkkotiedot.

SSH on (C/S-arkkitehtuuri).palvelinjaasiakasSuojatun SSH-kanavan muodostamiseksi molempien osapuolten on ensin muodostettava TCP-yhteys, neuvoteltava sitten versionumero ja erilaiset käytetyt algoritmit ja luotava samaistuntoavain käytetään myöhempään symmetriseen salaukseen. Kun käyttäjätunnistus on suoritettu, molemmat osapuolet voivat muodostaa istunnon tiedonvaihtoa varten.

Sitten seuraavissa harjoituksissa teemmeMääritä SSH-avaimet, konfigurointiavain on niin, että meidän ei tarvitse syöttää salasanaa toistuvasti, kun muodostamme yhteyden kehityskoneeseen etäyhteyden kautta,Miksi muodostaa etäyhteys?

Etäyhteyden etuna on, että jos käytät etätoimistoa, voit muodostaa etäyhteyden kehityskoneeseen SSH:n kautta, jotta voit kehittää paikallisesti. Ja jos sinun on suoritettava paikallista koodia, mutta sinulla ei ole ympäristöä, etäyhteys on erittäin tarpeellinen.

2.2 Kuinka käyttää SSH:ta etäyhteyden muodostamiseen kehityskoneeseen?

2.2.1 Käytä salasanaa SSH-etäyhteydessä

Ensin käytämme SSH-etäyhteyden salasanan syöttötapaa. Myöhemmin puhumme salasanattoman kirjautumisen määrittämisestä.

Kun kehityskoneen luominen on valmis, meidän on avattava tietokoneemme powerShell-pääte ja käytettäväWin+R Käytä pikanäppäintä avataksesi suoritusruudun, syötä powerShell ja avaa powerShell-pääte. (Jos käytät Linux- tai Mac-käyttöjärjestelmää, seuraavat vaiheet ovat samat)

Palaamme kehityskonealustalle ja astumme sisäänKehityskoneEtsi sivulta luomamme kehityskone ja napsautaSSH-yhteys

Lisää kuvan kuvaus tähän

Lisää kuvan kuvaus tähän

sitten kopioidaKirjautumiskomento, 37367 tässä on kehityskoneen käyttämä SSH-portti Yleensä porttia 22 käytetään ilman tätä porttinumeroa, ja jokaisen portti on erilainen, joten jos muodostat yhteyden kehityskoneeseen. , sinun on tarkistettava, onko portti väärä.

Liitä kopioitu komento powershelliin ja paina Enter. Tässä meidän on syötettävä salasana sisäänkirjautumiskomennon alle ja liitettävä se terminaaliin.Huomaa, että salasanan kopioimisen jälkeen liitä se hiiren oikealla painikkeella. Joidenkin tietokoneiden liittämisen pikanäppäin onshift+ins, tähän liitettyä salasanaa ei näytetä, tämä on normaalia.

Paina lopuksi Enter ja seuraava sisältö tulee näkyviin, mikä osoittaa onnistumisen:

Lisää kuvan kuvaus tähän

Lisää kuvan kuvaus tähän

Kun olemme muodostaneet yhteyden kehityskoneeseen, voimme käyttäähostnameVoit tarkastella kehityskoneen nimeä käyttämälläuname -aVoit tarkastella kehityskoneen ytimen tietoja käyttämällälsb_release -aVoit tarkastella kehityskoneen versiotietoja käyttämällänvidia-smiTarkista GPU-tiedot. Puhumme näistä komennoista myöhemmin.exitSe siitä.

2.2.2 Määritä SSH-avain SSH-etäyhteyttä varten

Mutta kun kehitämme ja opimme, salasanan syöttäminen etänä on hankalaa. Voimme asettaa SSH-avaimen ohittamaan salasanan syöttämisenssh-keygenkomento avaimen luomiseksi

SSH-avain on turvallinen ja kätevä kirjautumisen todennusmenetelmä, jota käytetään SSH-protokollan todentamiseen ja salattuun viestintään.

ssh-keygenTukee sekä RSA- että DSA-todennusavaimia.

Yleisesti käytettyjä parametreja ovat:

  • -t: Määritä avaimen tyyppi, kuten dsa, ecdsa, ed25519, rsa.
  • -b: Määritä avaimen pituus.
  • -C: Lisää kommentteja.
  • -f: Määritä tiedostonimi avaimen tallentamista varten.
  • -i: Lue salaamattomia ssh-v2-yhteensopivia yksityisen/julkisen avaimen tiedostoja.

Tässä käytämme RSA-algoritmia avaimen luomiseen, komento on:

ssh-keygen -t rsa
  • 1

Komennon syöttämisen jälkeenSyötä sisään kokonaanSiinä kaikki, tässä oleva avain luodaan oletusarvoisesti sisään~/.ssh/hakemiston alla,~Se tarkoittaa kotihakemistoa, jos se on windows, se onC:Users{your_username} .Voidaan käyttää powerShellissäGet-ContentKomento näyttää luodun avaimen, jota voidaan käyttää, jos se on Linux-käyttöjärjestelmäcatTilaus.

Lisää kuvan kuvaus tähän

Lisää kuvan kuvaus tähän

Sitten palaamme kehityskonealustalle ja napsautamme aloitussivulla ConfigurationSSH-avainja napsauta sittenLisää julkinen SSH-avain

Lisää kuvan kuvaus tähän

Lisää kuvan kuvaus tähän

Kopioi juuri luomasi avain ja liitä se julkisen avaimen ruutuun. Lopuksi napsauta Lisää nyt, ja SSH-avain on määritetty.

Lisää kuvan kuvaus tähän

Kun olet luonut SSH-avaimen, käynnistä uudelleenterminaaliKun muodostat etäyhteyden, salasanan syöttäminen ohitetaan.

2.2.3 Käytä VScodea SSH-etäyhteyteen

Tietysti voit käyttää myös SSH-etäyhteysohjelmistoja, kuten:Windterm, Xterminal odota. Tässä käytämme VScodea etäyhteyden muodostamiseen VScoden käytön etuna on, että se on koodieditori, joka on erittäin kätevä koodin muokkaamiseen ja muihin toimintoihin.

Jos haluamme muodostaa etäyhteyden VScodessa, meidän on asennettava myös joukko laajennuksia. Voit etsiä verkosta kuinka asentaa VScode. (Kehityskoneen vscode ei voi etsiä tätä laajennusta, mutta paikallinen vscode voi etsiä)

Lisää kuvan kuvaus tähän

Jos olet asentanut VScoden, voit napsauttaa vasemmalla olevaa laajennussivua ja kirjoittaa hakukenttään "SSH". Ensimmäinen on asennettava laajennus. Napsauta vain "Asenna".

Lisää kuvan kuvaus tähän

Kun olet asentanut laajennuksen, napsauta sivupalkissa olevaa etäyhteyskuvaketta, napsauta "+" -painiketta SSH:ssa ja lisää sisäänkirjautumiskomento kehityskoneen SSH-yhteydelle.

Lisää kuvan kuvaus tähän

Kopioimme sisäänkirjautumiskomennon, liitämme komennon ponnahdusikkunaan ja paina lopuksi Enter:

Lisää kuvan kuvaus tähän

Lisää kuvan kuvaus tähän

Oletusasetustiedosto on tietysti myös muokattavissa. Seuraava on määritystiedoston sisältö: (Tämä sisältää kaikki etäyhteystiedot.)

Host ssh.intern-ai.org.cn #主机ip也可以是域名
  HostName ssh.intern-ai.org.cn #主机名
  Port 37367 #主机的SSH端口
  User root #登录SSH使用的用户
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Jos haluat lisätä joitain seuraavista kokoonpanovaihtoehdoista manuaalisesti, sinun on muokattava vastaavia osia yllä olevan muodon mukaisesti.

Jos *StrictHostKeyChecking nojaUserKnownHostsFile* /dev/nullPoista ponnahdusikkuna, joka avautuu sormenjälkitarkistusta varten:

Lisää kuvan kuvaus tähän

StrictHostKeyChecking no Osoittaa, että isäntäavaimen tiukka tarkistus on poistettu käytöstä. Tämä tarkoittaa, että muodostettaessa yhteyttä uuteen SSH-palvelimeen, palvelimen isäntäavainta ei tarkasteta tarkasti, mikä voi aiheuttaa tietyn tietoturvariskin.

UserKnownHostsFile /dev/nullSe asettaa käyttäjän tunteman isäntäavaintiedoston arvoon /dev/null, mikä käytännössä jättää huomioimatta tunnettujen isäntäavaimien tallentamisen ja käytön.

Yleisessä tietoturvakäytännössä ei kuitenkaan ole suositeltavaa poistaa mielivaltaisesti tiukkaa isäntäavaimen tarkistusta.

Napsauta sitten "Yhdistä" oikeaan alakulmaan avautuvassa kehoteikkunassa muodostaaksesi etäyhteyden kehityskoneeseen.

Lisää kuvan kuvaus tähän

Lisää kuvan kuvaus tähän

Kun etäyhteys on muodostettu, voit valita avattavan kansion, jota voidaan kutsua myös työhakemistoksi. Voit valita kehityskoneen kansion tai paikallisen kansion.pilvilevy

Kun muodostat etäyhteyden seuraavan kerran, sinun ei tarvitse syöttää sisäänkirjautumiskomentoja ja muita tietoja Sinun tarvitsee vain avata vscode-etäyhteys nähdäksesi ensimmäisen yhteyden kehityskoneen tiedotrootSe tarkoittaa, että kun muodostamme ensimmäisen yhteyden kehityskoneeseen, käytämme/rootTyölista.

Lisää kuvan kuvaus tähän

Ja alla olevassa kuvassa->Ilmaisee, että sinun on valittava työhakemisto uudelleen kehityskoneeseen siirtymisen jälkeen:

Lisää kuvan kuvaus tähän

Ja alla olevassa kuvassa->Ilmaisee siirtymistä viimeisen kehityskoneen valitsemaan työhakemistoon:

Lisää kuvan kuvaus tähän

Joka kerta valittu työhakemisto näkyy kehityskonetietojen alla: (tässä on lagentille lisätyöhakemisto)

Lisää kuvan kuvaus tähän

Seuraavaksi esittelemme milloinPorttikartoitus

2.3. Porttikartoitus

2.3.1 Mitä porttikartoitus on?

Porttikartoitus Se on verkkotekniikka, joka voi yhdistää minkä tahansa ulkoisen verkon portin vastaavaan sisäisen verkon porttiin sisäisen verkon ja ulkoisen verkon välisen viestinnän toteuttamiseksi. Porttikartoituksen avulla intranetissä olevia palveluita tai sovelluksia voidaan käyttää ulkoisesta verkosta kätevän tiedonsiirron saavuttamiseksi verkon yli.

Joten miksi meidän on suoritettava porttikartoitus, kun käytämme kehityskonetta?

Koska seuraavilla kursseilla teemme mallejaweb_demo Käyttöönottokäytännössä tämän prosessin aikana kohtaat todennäköisesti verkkokäyttöliittymän epätäydellisen latauksen ongelman.Tämä johtuu siitä, että käytettäessä web_demoa kehityskoneen Web IDE:ssä, kehityskoneen http/https-palvelun suora käyttö voi kohdata välityspalvelinongelmia.ui resurssejaEi ladattu kokonaan.

Joten ratkaistaksemme tämän ongelman, meidän on porttikarttattava yhteys, jossa on web_demo, jaUlkoiset verkkolinkit on kartoitettu paikalliseen isäntään , käytämme paikallista yhteyttä tämän välityspalvelinongelman ratkaisemiseen. Harjoitellaan nyt.

Lisää kuvan kuvaus tähän

Ymmärretään ensin, kuinka kehityskoneen porttikartoitus toimii kaavion perusteella:

Alla on käytännön vaiheita. Ymmärrä ensin, kuinka porttikartoitus tehdään.

ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
  • 1

Yllä oleva on porttikartoituskomento Suorita tämä komento porttikartoituksen suorittamiseksi.

Lisää kuvan kuvaus tähän

Henkilökohtainen PC muodostaa etäyhteyden kehityskoneen ainoaan avoimeen porttiin 37367 (tämä mainitaan SSH:n aikana, ja jokaisen kehityskoneen avoimet portit ovat erilaiset) ja asettaa tunneliasetukset. Paljastettu satama toimii välitysasemana liikenteen välittämiselle.

  • -C: Ota pakkaus käyttöön vähentääksesi siirrettävien tietojen määrää.
  • -N: Ei suorita etäkäskyjä, vain muodostaa tunneleita.
  • -g: Salli etäisäntien muodostaa yhteys paikallisesti edelleenlähetettyihin portteihin.

Kun tämä SSH-komento suoritetaan henkilökohtaisessa PC:ssä, SSH-asiakas kuuntelee paikallisen koneen porttia 7860.

Kaikki paikalliseen porttiin 7860 lähetetty liikenne välitetään SSH-tunnelin kautta etäpalvelimen 127.0.0.1-osoitteen porttiin 7860.

Tämä tarkoittaa, että vaikka tämä kehityskoneen portti ei olisi suoraan alttiina ulkoiselle verkolle, voimme turvallisesti käyttää etäpalvelimen palveluita tämän tunnelin kautta. .

2.3.2 Kuinka porttikartoitus suoritetaan?
2.3.2.1 Käytä ssh-komentoa porttien yhdistämiseen

Menemme edelleen kehityskoneen käyttöliittymään, etsimme kehityskoneemme ja napsautammeRäätälöidyt palvelut, kopioi ensimmäinen komento,
Lisää kuvan kuvaus tähän

ssh -p 37367 [email protected] -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyChecking=no
  • 1

Esitellään hänelle komennon kunkin osan merkitys:

  • -p 37367: Määrittää SSH-yhteyden portin numeroon 37367, joka mainittiin aiemmin.
  • [email protected]: Osoittaa käytettäväksi root Käyttäjätunnus muodostaa yhteydenssh.intern-ai.org.cn tämä isäntä.
  • -CNg
    • -C Yleensä käytetään kompressoinnin mahdollistamiseen.
    • -N Ilmaisee, että etäkäskyjä ei suoriteta, mutta vain yhteydet muodostetaan portin edelleenlähetystä varten jne.
    • -g Salli etäisäntien muodostaa yhteys paikallisesti edelleenlähetettyihin portteihin.
  • -L {本地机器_PORT}:127.0.0.1:{开发机_PORT}: Tällä asetetaan paikallinen portin edelleenlähetys välittämään paikallisen koneen määritetty portti (by {本地机器_PORT} edustaa) välitetty etäisännälle (tässä esim.ssh.intern-ai.org.cn)/ 127.0.0.1 (eli paikallissilmukka-osoite) ja määritetty kehityskoneen portti (määrittää{开发机_PORT} ilmaista).
  • -o StrictHostKeyChecking=no: Poista tiukka isäntäavaimen tarkistus käytöstä välttääksesi tuntemattomista isäntäavaimista johtuvat kehotteet tai virheet, kun muodostat yhteyden ensimmäisen kerran.

Kun suoritat web-demoa, voit käyttää tätä komentoa porttikartoituksen suorittamiseen, esimerkiksi:

Luomme hello_world.py-tiedoston (klikkaa hiiren oikealla painikkeella kehityskoneen käyttöliittymää luodaksesi tiedoston ja muutamme nimeksi hello_world.py) ja täytämme tiedostoon seuraavan sisällön:

import socket
import re
import gradio as gr
 
# 获取主机名
def get_hostname():
    hostname = socket.gethostname()
    match = re.search(r'-(d+)$', hostname)
    name = match.group(1)
    
    return name
 
# 创建 Gradio 界面
with gr.Blocks(gr.themes.Soft()) as demo:
    html_code = f"""
            <p align="center">
            <a href="https://intern-ai.org.cn/home">
                <img src="https://intern-ai.org.cn/assets/headerLogo-4ea34f23.svg" alt="Logo" width="20%" style="border-radius: 5px;">
            </a>
            </p>
            <h1 style="text-align: center;">☁️ Welcome {get_hostname()} user, welcome to the ShuSheng LLM Practical Camp Course!</h1>
            <h2 style="text-align: center;">😀 Let’s go on a journey through ShuSheng Island together.</h2>
            <p align="center">
                <a href="https://github.com/InternLM/Tutorial/blob/camp3">
                    <img src="https://oss.lingkongstudy.com.cn/blog/202406301604074.jpg" alt="Logo" width="20%" style="border-radius: 5px;">
                </a>
            </p>

            """
    gr.Markdown(html_code)

demo.launch()
  • 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

Muista muokkauksen jälkeenctrl+sTallentaa

Ennen kuin suoritat koodin, sinun on käytettäväpip install gradio==4.29.0Komento asentaa seuraavat riippuvuuspaketit (kopioi ja liitä komento päätteeseen) ja suorita sitten yksi Web IDE:n päätteessäpython hello_world.pyTilaus

Lisää kuvan kuvaus tähän

Jos porttikartoitusta ei suoriteta, sitä ei voi käyttää paikallisella IP-osoitteella.

Lisää kuvan kuvaus tähän

Voin syöttää tämän powerShelliin seuraavalla komennolla:

ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
  • 1

Lisää kuvan kuvaus tähän

Tämä edustaa menestystä. (Ilmoitus: Tämä komento ei palauta mitään sisältöä, mikä tarkoittaa, että porttikartoitus on käynnissä, ja sitten näet web-käyttöliittymän avaamalla yhteyden verkkosivulla)

Lisää kuvan kuvaus tähän

2.3.2.2 Käytä vscodea porttien kartoittamiseen

Tietenkin, jos käytämme erilaisia ​​verkkokäyttöliittymiä, meidän on syötettävä toistuvasti komentoja, mikä on erittäin hankalaa, ja meidän on käytettävä VScodea.Olemme kytkeneet kehityskoneen etänä SSH:n kautta. Meidän ei tarvitse määrittää sitä manuaalisesti.Herätkää terminaali, porttivaihtoehdot löytyvät terminaalin oikealta puolelta:

Lisää kuvan kuvaus tähän

Täällä voit tarkastella porttikartoitustietoja. Jos haluat muokata porttia, voit muokata portin numeroa porttisarakkeessa.

3. Linuxin peruskomennot

Tässä osassa opastan sinut ymmärtämään joitain Linuxin puolia.Perustoiminnot , ja käytä joitain työkaluja. Jotta jokainen voi ratkaista sen itse, jos kohtaat ongelmia, voit myös kommentoida täällä, niin vastaan ​​sinulle ajoissa.

koska käytämmeKehityskoneharvoin käytettyviranomaishallinto , joten emme esittele sitä. (Seuraavat toiminnot suoritetaan VScode-päätteellä)

3.1 Tiedostonhallinta

Linuxissa yleisiä tiedostonhallintatoimintoja ovat:

  • Luo tiedosto:voi käyttää touch komento luo tyhjän tiedoston.
  • Luo hakemisto:käyttää mkdir Tilaus.
  • Hakemiston vaihto:käyttääcdTilaus.
  • Näytä hakemisto:käyttääpwdTilaus.
  • Näytä tiedoston sisältö: Jos käytetään cat Näytä suoraan tiedoston koko sisältö,more jaless Voidaan katsoa sivuilla.
  • Muokkaa tiedostoa:Kuten vi taivim Odota editoria.
  • Kopioi tiedostoja:käyttää cp Tilaus.
  • Luo tiedostolinkki:käyttäälnTilaus.
  • Siirrä tiedostoja:kulkea mv Tilaus.
  • Poista tiedostot:käyttää rm Tilaus.
  • poista hakemistormdir(Vain tyhjiä hakemistoja voidaan poistaa) tai rm -r(Ei-tyhjät hakemistot voidaan poistaa).
  • Etsi tiedostoja:Voi käyttää find Tilaus.
  • Tarkastele tiedoston tai hakemiston tietoja:käyttäälskomento, kuten käyttämällä ls -lTarkastele yksityiskohtaisia ​​tietoja hakemistossa olevista tiedostoista.
  • Käsittele tiedostoja: Voit käyttää monimutkaisia ​​tiedostotoimintoja vartensedTilaus.

Tässä on useita komentoja, joita käytämme kurssilla:

3.1.1 kosketus

Voimme käyttää kosketusta tiedostojen luomiseen nopeasti, joten meidän ei tarvitse napsauttaa manuaalisesti luodaksemme niitä.Haluamme esimerkiksi luoda ademo.pyasiakirja:

3.1.2 mkdir

Samalla tavalla, jos haluat luoda tiedoston nimeltätestHakemisto:

Lisää kuvan kuvaus tähän

3.1.3 CD

Tämä komento on yleisimmin käytetty komento Ennen kuin käytät sitä, sinun on selitettävä hakemistorakenne opiskelijoille, joilla ei ole tietokonetaitoja, ja piirrettävä kuva, jonka kaikki ymmärtävät:

Lisää kuvan kuvaus tähän

Se, mitä käytämme nyt, onroothakemistoon, joka on myös pääkäyttäjän kotihakemisto.~, linux-käyttöjärjestelmässä/Edustaa juurihakemistoa Juuri luomassamme hakemistossa on monia hakemistoja ja tiedostojaroothakemistoon, mukaan lukien.Edustaa nykyistä hakemistoa,.. Edustettu ylätason hakemisto.Jos nyt menisin sisääntesthakemistoon ja palaa sitten siihenrootHakemisto, voimme tehdä tämän:

3.1.4 pwd

voimme käyttääpwdKomento tarkastella nykyistä hakemistoa: Tämä helpottaa meidän määrittää, missä hakemistossa olemme tällä hetkellä.

Lisää kuvan kuvaus tähän

3.1.5 kissa

catKomento voi tarkastella tiedoston sisältöä ja lisää komentoja voidaan käyttää--helpNäytä komento:

  • -a, --show-all vastaa -vET:tä
  • -b, -luku-ei-tyhjä ei-tyhjien tulosterivien määrä, ohitukset -n
  • -e, vastaa -vE
  • -E, --show -end näyttää $ jokaisen rivin lopussa
  • -n, --numero numero kaikki lähtörivit
  • -s, --crick-blank vaimentaa toistuvia tyhjiä lähtörivejä
  • -t vastaa -vT:tä
  • -t, --show-tabs näyttää sarkainmerkit muodossa ^I
  • -v, --näytä ei-tulostus käyttää ^- ja M-merkintää, paitsi LFD ja TAB
3.1.6 vi tai vim

Voimme käyttää sitä, kun tarvitsemme muokata tiedostojavitaivim-komento, kun siirryt tiedoston muokkaamiseen, on kolme tilaa:

Lisää kuvan kuvaus tähän

Siirry käytettäväksi muokkaustilaani, vimin mukavuus on, että voit tehdä yksinkertaisia ​​tiedostomuokkauksia terminaalissa.

3.1.7 cp ja ln (korostus)

**cp**Komentoa käytetään usein seuraavilla kursseilla. Sitä käytetään tiedoston tai hakemiston kopioimiseen toiseen hakemistoon.

  • Kopioi tiedostot:cp 源文件 目标文件
  • Kopioi hakemisto:cp -r 源目录 目标目录

Mutta jos haluamme käyttää mallia, tämä toiminto vie paljon levytilaa, joten käytämme yleensäln komento, tämä on sama kuin Windowsin pikakuvake. Linuxissa on kahdenlaisia ​​linkkejä:kova linkki(kova linkki) kanssapehmeä linkki (symbolinen linkki), kova linkki tarkoittaa, että tiedostolla voi olla useita nimiä, kun taas pehmeä linkki luo erityisen tiedoston, jonka sisältö osoittaa toisen tiedoston sijaintiin. Kovia linkkejä on samassa tiedostojärjestelmässä, mutta pehmeät linkit voivat kattaa eri tiedostojärjestelmiä.

Siksi käytämme yleensä pehmeitä yhteyksiä Sen yleiset käyttötavat ovat seuraavat:

ln [参数][源文件或目录][目标文件或目录]
  • 1

Parametrit ovat seuraavat:

  • -s: Pehmeiden linkkien (symbolisten linkkien) luominen on myös yleisimmin käytetty;
  • -f: Pakota suoritus, korvaa olemassa olevat kohdetiedostot;
  • -i: Interaktiivinen tila, jos tiedosto on olemassa, käyttäjältä kysytään, korvataanko se;
  • -n: käsittele symbolisia linkkejä yleisinä hakemistoina;
  • -v: Näytä yksityiskohtainen käsittely.
3.1.8 mv ja rm

mvkomento jarmKomentoja käytetään samalla tavalla, muttamvSitä käytetään tiedostojen tai hakemistojen siirtämiseen, ja se voidaan myös nimetä uudelleen.rmKomentoa käytetään tiedostojen tai hakemistojen poistamiseen.

Yleisesti käytetyt menetelmät ovat seuraavat:

  • mv komento

Yleisesti käytetyt parametrit:

  • -i: Interaktiivinen tila, kysy ennen päällekirjoittamista.
  • -f: Voiman peitto.
  • -u: Siirrä vain, jos lähdetiedosto on kohdetiedostoa uudempi.

Käyttöesimerkki:

  • mv file1.txt dir1/: siirrä tiedosto file1.txt Siirrä hakemistoondir1 keskellä.

  • mv file1.txt file2.txt: siirrä tiedosto file1.txt Nimeä uudelleen muotoonfile2.txt

  • rm-komento

Yleisesti käytetyt parametrit:

  • -i: Interaktiivinen tila, kysy ennen poistamista.
  • -f: Pakotettu poisto, ei-olemassa olevat tiedostot huomioimatta, ilman vahvistuskehotetta.
  • -r: Poistaa rekursiivisesti hakemiston ja sen sisällön.

Käyttöesimerkki:

  • rm file.txt:Poista tiedostot file.txt
  • rm -r dir1/: Poista hakemistoja rekursiivisesti dir1 ja kaikki sen sisältö.

Hakemiston poistamiskomentoa voidaan myös käyttäärmdir

3.1.9 löytö

findKomento on tehokas tiedostojen hakutyökalu Linux-järjestelmässä. Se voi etsiä tiedostoja tai hakemistoja, jotka täyttävät ehdot määritetystä hakemistosta ja sen alihakemistoista, ja suorittaa vastaavia toimintoja.

Seuraava onfindJotkut komennon yleiset käyttötavat:

  1. Etsi tiedostonimen mukaan:käyttää-name vaihtoehto etsiä tiedostoja tiedostonimen mukaan. Esimerkiksi,find /path/to/directory -name "file.txt"etsii määritetystä hakemistosta ja sen alihakemistoistafile.txtasiakirja.
  2. Etsi tiedostotyypin mukaan:käyttää-type vaihtoehto etsiä tiedostoja tiedostotyypin mukaan. Esimerkiksi,find /path/to/directory -type fKaikki tavalliset tiedostot määritetystä hakemistosta ja sen alihakemistoista löytyvät.
  3. Etsi tiedostokoon mukaan:käyttää-size mahdollisuus etsiä tiedostoja tiedostokoon mukaan. Esimerkiksi,find /path/to/directory -size +100MLöytää yli 100 Mt tiedostot määritetystä hakemistosta ja sen alihakemistoista.
  4. Hae muokkausajan mukaan:käyttää-mtime-atimetai-ctime Asetukset etsivät tiedostoja niiden muokkausajan, käyttöajan tai tilanmuutosajan perusteella. Esimerkiksi,find /path/to/directory -mtime -7Löytää määritetystä hakemistosta ja sen alihakemistoista tiedostot, joita on muokattu 7 päivän kuluessa.
  5. Etsi tiedostojen käyttöoikeuksien perusteella:käyttää-perm vaihtoehto etsiä tiedostoja tiedostooikeuksien perusteella. Esimerkiksi,find /path/to/directory -perm 755Löytää tiedostot, joilla on lupa 755 määritetystä hakemistosta ja sen alihakemistoista.
  6. Etsi käyttäjän tai ryhmän mukaan:käyttää-usertai-group Valinnat etsivät tiedostot omistajan tai ryhmän mukaan. Esimerkiksi,find /path/to/directory -user usernameHakee määritetystä hakemistosta ja sen käyttäjälle kuuluvista alihakemistoistausernameasiakirja.
  7. suorittaa operaatioita:käyttää-exec Optiot voivat suorittaa vastaavia toimintoja löydetyille tiedostoille. Esimerkiksi,find /path/to/directory -name "*.txt" -exec rm {} ;poistaa kaikki löydetyt, jotka päättyvät.txttiedosto lopussa.
3.1.10 ls

lsKomentoa voidaan käyttää listaamaan hakemiston sisältö sekäyksityiskohdat

Yleisesti käytetyt parametrit ja käyttötavat ovat seuraavat:

  • -a: Näytä kaikki tiedostot ja hakemistot, mukaan lukien piilotetut tiedostot (muiden kuin.tiedosto tai hakemisto, joka alkaa kirjaimella .).
  • -l: Näyttää yksityiskohtaiset tiedot pitkässä muodossa, mukaan lukien tiedostojen käyttöoikeudet, omistaja, koko, muokkausaika jne.
  • -h:ja-lKäytetään yhdessä näyttämään tiedostokoko ihmisen luettavalla tavalla (esim.KMGodota).
  • -R: Listaa alihakemistojen sisältö rekursiivisesti.
  • -t : Näytä tiedostojen muokkausajan järjestyksessä. ,

Lisää kuvan kuvaus tähän

3.1.11 sed

sedKomento on stream-editori, jota käytetään pääasiassa tekstinkäsittelyyn. Sitä käytetään usein monimutkaisten tiedostotoimintojen käsittelyssä.sedYleisesti käytetyt parametrit ja komentojen käyttöesimerkit ovat seuraavat:

  • Parametrin kuvaus:
    • -e<script> tai--expression=<script>: Määritä komentosarjat suoraan komentorivillä tekstinkäsittelyä varten.
    • -f<script文件> tai--file=<script文件>: Lue skripti määritetystä komentosarjatiedostosta tekstinkäsittelyä varten.
    • -n tai--quiet tai--silent: Tulosta vain skriptin käsittelemät tulostetulokset, äläkä tulosta täsmäämättömiä rivejä.
  • Toiminnon kuvaus:
    • a: Lisää määritetty tekstimerkkijono nykyisen rivin seuraavalle riville.
    • c: Korvaa määritetyn rivialueen määritetyllä tekstimerkkijonolla.
    • d: Poista määritetty rivi.
    • i: Lisää määritetty tekstimerkkijono nykyisen rivin edelliselle riville.
    • p : Tulosta valitut rivit.yleensä kanssa-n Käytettäessä yhdessä parametrien kanssa vain vastaavat rivit tulostetaan.
    • s : Käytä säännöllisiä lausekkeita tekstin korvaamiseen. Esimerkiksi,s/old/new/g Korvaa kaikki "InternLM" sanalla "InternLM yyds".
  • Esimerkki:

Lisää kuvan kuvaus tähän

käytetään esimerkissäechokomento, tämä on sama kuin pythonissaprintSama, käytetään sisällön tulostamiseen, käytä tässä putkimerkkiä>Tulosta InternLM tiedostoon Yleisesti käytettyjä putkimerkkejä ovat<ja|voimme käyttää esimerkiksigrepKomento tarkastella asennettuja osia pythonissaosKenttäpaketti:

Lisää kuvan kuvaus tähän

grep On tehokas tekstihakutyökalu. Yleisesti käytetyt parametrit ovat seuraavat:

  • -i: Hae kirjainkoosta riippumatta.
  • -v: Kääntää vastaavuuden, eli näyttää täsmäämättömät rivit.
  • -n: Näytä rivinumero.
  • -c: Laske vastaavien rivien määrä.

3.2 Prosessinhallinta

Prosessien hallintaKomennot ovat tärkeitä työkaluja järjestelmän valvontaan ja prosessien hallintaan Yleisesti käytettyjä prosessinhallintakomentoja ovat seuraavat:

  • ps: Näytä käynnissä olevat prosessit
  • alkuun: Dynaaminen näyttö käynnissä olevista prosesseista
  • pstree: Näytä käynnissä olevat prosessit puunäkymässä
  • pgrep: käytetään prosessien etsimiseen
  • kiva: Muuta prosessin prioriteettia
  • työpaikkoja: Näytä prosessiin liittyvät tiedot
  • bg ja fg: Siirrä prosessi taustalle
  • tappaa: tappamisprosessi

Kehityskoneessa on myös erityinen komentonvidia-smi , joka on NVIDIA System Management Interface -käyttöliittymän komentorivityökalu, jota käytetään NVIDIA GPU -laitteiden valvontaan ja hallintaan. Se tarjoaa nopean tavan tarkastella tietoja, kuten grafiikkasuorittimen tila, käyttö, lämpötila, muistin käyttö, virrankulutus ja GPU:ssa käynnissä olevat prosessit.

Seuraavassa on esimerkkejä kunkin komennon käytöstä:

  • ps : Listaa nykyisen järjestelmän prosessit. Erilaisia ​​prosessitietoja voidaan näyttää eri vaihtoehdoilla, kuten:
    • ps aux  # 显示系统所有进程的详细信息
      
      • 1
  • top : Näytä dynaamisesti prosessien tila järjestelmässä. Se päivittää prosessiluettelon reaaliajassa ja näyttää prosessit, joissa on eniten suorittimen ja muistin käyttöä.
    • top  # 启动top命令,动态显示进程信息
      
      • 1
  • pstree: Näyttää parhaillaan käynnissä olevat prosessit ja niiden ylä-lapsi-suhteet puukaavion muodossa.
    • pstree  # 显示进程树
      
      • 1
  • pgrep : Etsi kriteerit vastaavat prosessit. Voit etsiä prosesseja prosessin nimen, käyttäjän ja muiden ehtojen perusteella.
    • pgrep -u username  # 查找特定用户的所有进程
      
      • 1
  • nice: Muuta prosessin prioriteettia.nice Mitä pienempi arvo, sitä korkeampi prosessin prioriteetti.
    • nice -n 10 long-running-command  # 以较低优先级运行一个长时间运行的命令
      
      • 1
  • jobs: Näyttää luettelon nykyisen pääteistunnon töistä, mukaan lukien taustalla käynnissä olevat prosessit.
    • jobs  # 列出当前会话的后台作业
      
      • 1
  • bg jafgbg Aseta keskeytetty prosessi toimimaan taustalla,fg Tuo taustaprosessi takaisin etualalle.
    • bg  # 将最近一个挂起的作业放到后台运行
      fg  # 将后台作业调到前台运行
      
      • 1
      • 2
  • kill: Lähetä signaali määritetylle prosessille, jota käytetään yleensä lopettamaan prosessi.
    • kill PID  # 杀死指定的进程ID
      
      • 1
    • Ilmoitus,kill Komento lähetetään oletuksenaSIGTERM Signaali, jota voidaan käyttää, jos prosessi ei vastaa-9käyttääSIGKILL Signaali tappaa prosessin voimakkaasti:

    • kill -9 PID  # 强制杀死进程    
      
      • 1

SIGTERM Signaalin päättäminen (Signal Termination) on standardisignaali, jota käytetään Unix- ja Unix-tyyppisissä käyttöjärjestelmissä prosessin lopettamisen pyytämiseen. Tämä signaali lähetetään yleensä, kun järjestelmä tai käyttäjä haluaa sulkea prosessin sulavasti.jaSIGKILLSignaalit ovat erilaisia,SIGTERM Prosessi voi siepata ja käsitellä signaaleja, jolloin prosessi puhdistuu ennen poistumista. (internetistä)

Seuraava on nvidia-smi Joitakin komentojen peruskäyttöä:

  • Näytä yhteenvetotiedot GPU:n tilasta:
    • nvidia-smi
      
      • 1
  • Näytä yksityiskohtaiset GPU-tilatiedot:
    • nvidia-smi -l 1
      
      • 1
    • Tämä komento päivittää tilatiedot 1 sekunnin välein.

  • Näytä GPU:n käyttöhistoria:
    • nvidia-smi -h
      
      • 1
  • Luettele kaikki GPU:t ja näytä niiden PID:t ja prosessien nimet:
    • nvidia-smi pmon
      
      • 1
  • Lopeta määritetty GPU-prosessi väkisin:
    • nvidia-smi --id=0 --ex_pid=12345
      
      • 1
    • Tämä lopettaa väkisin prosessin, jonka PID 12345 on GPU ID 0.

  • Aseta GPU:n suorituskykytila:
    • nvidia-smi -pm 1
      nvidia-smi -i 0 -pm 1
      
      • 1
      • 2
    • Ensimmäinen komento asettaa kaikki GPU:t suorituskykytilaan, toinen komento kohdistuu vain GPU:hun, jonka tunnus on 0.

  • Käynnistä GPU uudelleen:
    • nvidia-smi --id=0 -r
      
      • 1
    • Tämä käynnistää uudelleen GPU:n tunnuksella 0.

  • Näytä ohjetiedot:
    • nvidia-smi -h
      
      • 1

Seuraavassa on johdatus GPU-tietoihin kuvan kautta:

Lisää kuvan kuvaus tähän

3.3 Työkalun käyttö

Tässä on työkaluTMUXTMUX on päätemultiplekseri. Sen avulla on helppo vaihtaa useiden päätteiden välillä, irrottaa ne (tämä ei tapa terminaaleja, ne jatkavat toimintaansa taustalla) ja yhdistävät ne uudelleen muihin liittimiin. Miksi ottaa tämä työkalu käyttöön?Koska se tehdään myöhemminXtunerMallin hienosäätö kestää kauanTmuxSe voi ratkaista tilanteen, jossa ohjelma lopetetaan ja keskeytetään. Näin asennat ja käytät sitä.

Koska kehityskone käyttää ubuntu-käyttöjärjestelmää, voit käyttäälsb_release -a Komento tarkastella ubuntu-järjestelmätietoja:

Lisää kuvan kuvaus tähän

ja sitten käyttääapt install tmuxtmuxin asennuskomento Voit käyttää sitä asennuksen jälkeen.tmuxVoit käyttää tmux-komentoa. Jos haluat poistua tmuxista, voit käyttää ".Ctrl+d"pikanäppäin.

Kehityskoneessa vain /root-polun alla olevat tiedostot tallennetaan jatkuvasti Muille poluille asennetut ohjelmistot nollataan uudelleenkäynnistyksen jälkeen.

Tarkat käyttötavat ovat nähtävissä osoitteessa:

https://www.ruanyifeng.com/blog/2019/10/tmux.html

4. Johdatus Condaan ja Shelliin (lisätietoja)

Conda on avoimen lähdekoodin pakettien hallinta- ja ympäristönhallintajärjestelmä, joka toimii Windowsissa, macOS:ssä ja Linuxissa. Se asentaa, suorittaa ja päivittää nopeasti ohjelmistopaketteja ja niiden riippuvuuksia. Condan avulla voit helposti luoda, tallentaa, ladata ja vaihtaa erilaisia ​​ympäristöjä paikallisella koneellasi.

Asennettu jo kehityskoneeseenconda, voimme käyttää sitä suoraan, ja kehityskoneessa on myös sisäänrakennettu sellainencondaTilausstudio-conda, esittelemme allacondaPeruskäyttö jastudio-condaKuinka käyttää ja esitellästudio-condaMiten se saavutetaan.

Esittelemme sen seuraavissa osissa:

  1. condan asetukset
  2. conda ympäristönhallinta
  3. conda ja pip
  4. Studio-condaa käytetään Shellin kanssa (laajennus)

4.1 conda asetukset

voimme käyttääconda --versionnähdäksesi nykyisen kehityskoneencondaversiotiedot:

Lisää kuvan kuvaus tähän

kun haluamme käyttääcondaSe on erittäin hidasta pakettia asennettaessa. Voimme asettaa kotimaisen peilauksen asennusnopeuden parantamiseksi.

#设置清华镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Mutta yleensä käytämmepipAsennamme paketin, esittelemme sen myöhemminpipjacondaero.

Jos haluamme nähdä condan kokoonpanotiedot, voimme käyttääconda config --show-komento, jos se on kehityskoneen oletusasetus, se palauttaa: (osa tiedoista)

Lisää kuvan kuvaus tähän

Nämä kokoonpanot ovat mukanaCondaYmpäristön konfigurointi vaikuttaa ohjelmistopakettien asennuksen, päivitysten, ympäristönhallinnan ja muiden toimintojen menetelmiin ja tuloksiin.

4.2 conda ympäristönhallinta

Tämä osa onconda中非常重要的一部分,掌握了这一部分大家就可以将开发环境玩转到飞起了😀。

4.2.1 Luo virtuaalinen ympäristö

voimme käyttääconda create -n name python``=3.10 Luo virtuaalinen ympäristö, mikä tarkoittaa, että luodaan virtuaalinen ympäristö Python-versiolla 3.10 ja nimellä.Luomisen jälkeen voit.condahakemiston allaenvsLöytyy hakemistosta.

Lisää kuvan kuvaus tähän

Kun python-versiota ei ole määritetty, uusimpaan python-versioon perustuva virtuaaliympäristö luodaan automaattisesti. Samalla voimme asentaa tarvittavat paketit virtuaaliympäristön luomisen yhteydessä:conda create -n name numpy matplotlib python=3.10(Mutta en suosittele käyttämään sitä tällä tavalla)

Yleiset parametrit virtuaaliympäristön luomiseksi ovat seuraavat:

  • -n tai --name: Määritä luotavan ympäristön nimi.
  • -c tai --channel: Määritä lisäpakettikanavat.
  • -klooni: Kloonaa olemassa oleva ympäristö luodaksesi uuden ympäristön.
  • -p tai --prefix: Määritä ympäristön asennuspolku (ei oletussijainti).
4.2.2 Tarkista mitä virtuaalisia ympäristöjä on olemassa

Jos haluamme nähdä, mitä virtuaalisia ympäristöjä meillä on, voimme käyttää seuraavaa komentoa:

conda env list
conda info -e
conda info --envs
  • 1
  • 2
  • 3

Lisää kuvan kuvaus tähän

Samalla voimme nähdä myös hakemiston, jossa ympäristö sijaitsee.

4.2.3 Virtuaaliympäristön aktivointi ja siitä poistuminen

Kun olemme luoneet virtuaaliympäristön, jota voimme käyttääconda activate name komento virtuaaliympäristön aktivoimiseksi, kuinka tarkistaa, onko vaihto onnistunut?Se on helppoa, katso vain(base)Tuleeko siitä luodun virtuaaliympäristön nimi.

Lisää kuvan kuvaus tähän

Jos haluat poistua virtuaaliympäristöstä, voit käyttää:

conda activate
conda deactivate
  • 1
  • 2

Molemmat komennot palaavatbaseympäristö, koskabaseSe on condan perusympäristö, jos tarkkailet,baseYmpäristöhakemisto on korkeammalla tasolla kuin muut virtuaaliympäristön hakemistot.

4.2.4 Poista ja vie virtuaaliympäristö

Jos haluat poistaa virtuaaliympäristön, voit käyttääconda remove --name name --all, jos poistat vain yhden tai joitakin paketteja virtuaaliympäristössä, voit käyttääconda remove --name name package_name

Virtuaaliympäristön vienti on erittäin tarpeellista tietylle ympäristölle, koska joidenkin ohjelmistopakettien riippuvuudet ovat erittäin monimutkaisia, ja on hankalaa luoda ja määrittää se itse. ja voit myös jakaa määritykset muiden kanssa.

#获得环境中的所有配置
conda env export --name myenv > myenv.yml
#重新还原环境
conda env create -f  myenv.yml
  • 1
  • 2
  • 3
  • 4

Esimerkiksi teemmextuner0.1.17Virtuaalinen ympäristö viedään ja määritystiedot ovat seuraavat:

Lisää kuvan kuvaus tähän

Nämä sisältävätympäristön nimiVirtuaaliympäristöpakettien online-varaston sijaintijaVirtuaaliympäristön riippuvuudet . Myöhemmin käytämme kehittyneitä käyttötapoja palauttaaksemme virtuaaliympäristön nopeasti.

4.3 conda ja pip

Tässä osassa esittelemme joitaincondajapipJoitakin eroja:

  1. conda voi hallita muita kuin python-paketteja, kun taas pip voi hallita vain python-paketteja.
  2. condaa voidaan käyttää virtuaalisen ympäristön luomiseen, mutta pip ei voi eikä sen tarvitse luottaa sellaisiin paketeihin kuin virtualenv.
  3. Condan asentama paketti on koottubinääritiedosto, riippuvat paketit asennetaan automaattisesti pakettitiedostojen asennuksen aikanapyörä tai lähdekoodi, muita riippuvuuksia kuin Python-kieltä ei tueta asennuksen aikana.
  4. Condan asentamat paketit ladataan nykyistä virtuaaliympäristöä vastaavaan hakemistoon ja ne voidaan ladata kerran ja asentaa useita kertoja. pip ladataan suoraan vastaavaan ympäristöön.

Pyörä Se on Python-asennuspaketin muoto.

Se on esikäännetty binäärijakelumuoto, joka on samanlainen kuin condassa käännetyt binaarit.

Wheel-muodon tärkeimmät edut ovat:

  1. Nopea asennus: Koska se on esikäännetty, käännösprosessia, kuten lähdekoodin asennusta, ei tarvitse käydä läpi asennuksen aikana, mikä säästää aikaa.
  2. Johdonmukaisuus: varmistaa, että asennustulokset ovat yhdenmukaisia ​​eri järjestelmissä ja ympäristöissä.

Jos esimerkiksi haluat asentaa suuren Python-kirjaston, Wheel-muodon käyttäminen voi välttää asennusongelmat, jotka johtuvat eroista eri koneiden käännösympäristöissä. Lisäksi niissä järjestelmissä, joissa ei ole käännösympäristöä tai joilla on heikot käännösominaisuudet, Wheel-muoto voi tehdä asennusprosessista sujuvamman.

4.4 Studio-condan käyttö ja Shell (laajennus)

Tämä osa on laajennettu osa, koska tämä osa on mielestäni erittäin mielenkiintoinen ja erittäin käytännöllinen, joten jos olet kiinnostunut, voit oppia sen.

Esittelemme ensinstudio-conda , joka on kehityskoneen sisäänrakennettu komento ja se toteutetaan Shell-komentosarjan kautta. Mikä on Shell-skripti?

Shell-käsikirjoitus Tekstitiedosto, joka sisältää sarjan komentoja, jotka on järjestetty tiettyyn järjestykseen tehtävien automatisoimiseksi Unix/Linux tai vastaavassa käyttöjärjestelmäympäristössä.

Shell-skriptit kirjoitetaan yleensä Shell-kielellä. Yleiset Shell-kielet, kuten Bash, Sh, jne. ovat aiemmin käyttöönottamamme peruskomennot, jotka kuuluvat Shell-kieleen.

Siinä on seuraavat tärkeät ominaisuudet:

  1. automaatio : Sarja toistuvia, monimutkaisia ​​toimintoja voidaan kirjoittaa komentosarjaksi ja sitten yksinkertaisesti ajaa komentosarja automatisoidaksesi nämä toiminnot, mikä säästää aikaa ja vähentää virheitä. Esimerkiksi komentosarja, joka varmuuskopioi tärkeitä tiedostoja säännöllisesti joka päivä.
  2. Järjestelmän hallinta : Käytetään järjestelmän kokoonpanon, käyttöoikeuksien, prosessinhallinnan jne. hallintaan. Esimerkiksi komentosarja, joka luo uuden käyttäjän ja määrittää hänen käyttöoikeudet.
  3. Eräkäsittely : Kyky käsitellä useita tiedostoja tai tietoja samanaikaisesti. Esimerkiksi komentosarja, joka muuntaa joukon kuvatiedostoja yhdestä muodosta toiseen.
  4. Prosessinhallinta: Kuten ehdollinen arviointi (if-else), silmukka (for, while) jne., jolloin komentosarjat voivat suorittaa erilaisia ​​toimintoja eri tilanteiden mukaan.

Ettästudio-condaSe on osa automaatiota. Kehityskoneemme pääkäyttäjän bash-ympäristön määritystiedosto on.bashrc, mutta itse asiassa pääasetustiedosto on/share/.aide/config/bashrc, tähän tiedostoon on kirjoitettu joitain komentoja, joiden avulla voimme suorittaa joitain toimintoja nopeammin, kuten:

export no_proxy='localhost,127.0.0.1,0.0.0.0,172.18.47.140'
export PATH=/root/.local/bin:$PATH
export HF_ENDPOINT='https://hf-mirror.com'
alias studio-conda="/share/install_conda_env.sh"
alias studio-smi="/share/studio-smi"
  • 1
  • 2
  • 3
  • 4
  • 5

exportkäytetään ympäristömuuttujien asettamiseen.aliason kopioida sh-tiedosto muuttujaksi. Tämä voidaan suorittaa päätteessä Ourstudio-condaSe siitä.

tässästudio-smiSitä käytetään virtuaalimuistin käytön tarkistamiseen Avattaessa/share/studio-smiTiedoston voi nähdä:

#!/bin/bash

if command -v vgpu-smi &> /dev/null
then
    echo "Running studio-smi by vgpu-smi"
    vgpu-smi
else
    echo "Running studio-smi by nvidia-smi"
    nvidia-smi
fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Tätä komentosarjaa käytetään tarkistamaan, onko olemassa a vgpu-smi komento, jos se on olemassa, se suoritetaanvgpu-smi näyttää virtuaalisen GPU:n (vGPU) tilatiedot, jos sitä ei ole, se toimiinvidia-smi näyttääksesi NVIDIA GPU:n tilatiedot. Kuten alla:

Lisää kuvan kuvaus tähän

nvidia-smi on työkalu fyysisten NVIDIA GPU -laitteiden valvontaan ja hallintaanvgpu-smi Suunniteltu valvomaan ja hallitsemaan NVIDIA vGPU -tekniikan avulla virtualisoituja GPU-resursseja.

katsomme/share/install_conda_env.shTiedoston sisältö on seuraava:

#!/bin/bash
# clone internlm-base conda env to user's conda env
# created by xj on 01.07.2024
# modifed by xj on 01.19.2024 to fix bug of conda env clone
# modified by ljy on 01.26.2024 to extend

XTUNER_UPDATE_DATE=`cat /share/repos/UPDATE | grep xtuner |awk -F= '{print $2}'`
HOME_DIR=/root
CONDA_HOME=$HOME_DIR/.conda
SHARE_CONDA_HOME=/share/conda_envs
SHARE_HOME=/share

list() {
    cat <<-EOF
  预设环境          描述

  internlm-base    pytorch:2.0.1, pytorch-cuda:11.7
  xtuner           Xtuner(源码安装: main $(echo -e "033[4mhttps://github.com/InternLM/xtuner/tree/main033[0m"), 更新日期:$XTUNER_UPDATE_DATE)
  pytorch-2.1.2    pytorch:2.1.2, pytorch-cuda:11.8
EOF
}

help() {
    cat <<-EOF
  说明: 用于快速clone预设的conda环境

  使用: 
  
    1. studio-conda env -l/list 打印预设的conda环境列表
  
    2. studio-conda <target-conda-name> 快速clone: 默认拷贝internlm-base conda环境
    
    3. studio-conda -t <target-conda-name> -o <origin-conda-name> 将预设的conda环境拷贝到指定的conda环境
        
EOF
}

clone() {
    source=$1
    target=$2

    if [[ -z "$source" || -z "$target" ]]; then
        echo -e "033[31m 输入不符合规范 033[0m"
        help
        exit 1
    fi

    if [ ! -d "${SHARE_CONDA_HOME}/$source" ]; then
        echo -e "033[34m 指定的预设环境: $source不存在033[0m"
        list
        exit 1
    fi

    if [ -d "${CONDA_HOME}/envs/$target" ]; then
        echo -e "033[34m 指定conda环境的目录: ${CONDA_HOME}/envs/$target已存在, 将清空原目录安装 033[0m"
        wait_echo&
        wait_pid=$!
        rm -rf "${CONDA_HOME}/envs/$target"
        kill $wait_pid
    fi

    echo -e "033[34m [1/2] 开始安装conda环境: <$target>. 033[0m"
    sleep 3
    tar --skip-old-files -xzvf /share/pkgs.tar.gz -C ${CONDA_HOME}
    wait_echo&
    wait_pid=$!
    conda create -n $target --clone ${SHARE_CONDA_HOME}/${source}
    if [ $? -ne 0 ]; then
        echo -e "033[31m 初始化conda环境: ${target}失败 033[0m"
        exit 10
    fi

    kill $wait_pid

    # for xtuner, re-install dependencies
    case "$source" in
    xtuner)
        source_install_xtuner $target
        ;;
    esac

    echo -e "033[34m [2/2] 同步当前conda环境至jupyterlab kernel 033[0m"
    lab add $target
    source $CONDA_HOME/bin/activate $target
    cd $HOME_DIR

    echo -e "033[32m conda环境: $target安装成功! 033[0m"

    echo """
    ============================================
                    ALL DONE!
    ============================================
    """
}

······
dispatch $@
  • 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
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97

yksi heistä*list*()Odota, se on kaikkistudio-condatoiminto, joka voi toteuttaa tiettyjä toimintoja, esimerkiksi voimme käyttäästudio-conda env listVoit tarkastella oletusympäristöä seuraavasti:

Lisää kuvan kuvaus tähän

sisään*clone*()Toiminnon päätehtävä on kopioida ympäristö, mutta se voidaan kopioida vain oletusympäristöstä Pääkoodi on itse asiassa:

tar --skip-old-files -xzvf /share/pkgs.tar.gz -C ${CONDA_HOME}

conda create -n $target --clone ${SHARE_CONDA_HOME}/${source}
  • 1
  • 2
  • 3

Pura esiasetetun ympäristön pakattu paketti ja luo sitten virtuaalinen ympäristö kloonauksen avulla. Jotain logiikkaa on kuitenkin asetettu myös Shell-skriptiin, mutta se on vain harkinta, jos olet perehtynyt mihin tahansa ohjelmointikieleen Jos et ymmärrä sitä, se ei ole suuri ongelma.

Joten miten lisäämme oman luomamme ympäristömmestudio-condaEntä keskimmäinen?

Ensimmäinen askel on luoda uusi conda-ympäristö hakemistoon /share/conda_envs

conda create -p /share/conda_envs/xxx python=3.1x

Toinen vaihe on kopioida tiedostot hakemistosta /root/.conda/pkgs paikalliselta koneelta kansioon /share/pkgs, pakata uudelleen ja korvata ne (tämä vaihe on tallentaa suuret julkiset paketit conda-luontiprosessin aikana toistuvien latausten välttämiseksi)

cp -r -n /root/.conda/pkgs/* /share/pkgs/

cd /share && tar -zcvf pkgs.tar.gz pkgs

Kolmas vaihe on päivittää luettelotoiminto tiedostossa install_conda_env.sh ja lisätä uusi conda-ympäristön kuvaus.

Yllä oleva on kehityskoneen oletusarvoisesti tarjoama menetelmä. Itse asiassa on olemassa toinen menetelmä, jota käytimme aiemmincondaVietiinxtuner0.1.17Voimme käyttää virtuaaliympäristöjen konfiguraatiotiedostojaconda env create -f xtuner0.1.17.yml komento palauttaa virtuaaliympäristö.Kirjoitetaan yksinkertainen Shell-skripti tämän toiminnon toteuttamiseksi: Luommetest.shtiedostoon, kirjoita seuraava sisältö:

#!/bin/bash

# 定义导出环境的函数
export_env() {
    local env_name=$1
    echo "正在导出环境: $env_name"
    # 导出环境到当前目录下的env_name.yml文件
    conda env export -n "$env_name" > "$env_name.yml"
    echo "环境导出完成。"
}

# 定义还原环境的函数
restore_env() {
    local env_name=$1
    echo "正在还原环境: $env_name"
    # 从当前目录下的env_name.yml文件还原环境
    conda env create -n "$env_name" -f "$env_name.yml"
    echo "环境还原完成。"
}

# 检查是否有足够的参数
if [ $# -ne 2 ]; then
    echo "使用方法: $0 <操作> <环境名>"
    echo "操作可以是 'export' 或 'restore'"
    exit 1
fi

# 根据参数执行操作
case "$1" in
    export)
        export_env "$2"
        ;;
    restore)
        restore_env "$2"
        ;;
    *)
        echo "未知操作: $1"
        exit 1
        ;;
esac
  • 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

Kun olemme luoneet Shell-skriptin, meidän on myönnettävä komentosarjalle käyttöoikeudet.chmod +x test.sh , syötä sitten./test.sh restore xtuner0.1.17Ja paina Enter palauttaaksesi virtuaaliympäristön.

Lisää kuvan kuvaus tähän

Tämä ei kuitenkaan juurikaan eroa suorasta käytöstä, jos tätä toimintoa verrataan kehityskoneen toimintaan,studio-conda Komentojen yhdistäminen on erittäin kätevää, mutta ympäristön kopiointimenetelmät ovat erilaisia.Siksi, jos haluat toteuttaa sen, sinun on tehtävä se/share/install_conda_env.shTiedoston logiikkaa on muutettu.

Okei, tämä on kaikki tämän tason sisältö. Toivon, että yllä olevasta sisällöstä on hyötyä kaikille tulevaisuudessa, jos haluat lukea lisää Linuxista , se auttaa meitä oppimaan suurilla malleilla ei ole paljon vaikutusta, mutta jos opit Linuxin hyvin, se tekee suurten mallien oppimisesta erittäin sujuvaa. Lopuksi, älä unohda suorittaa aiemmin asettamamme tasoja!

Linkki blogiin:Linux

yleinen ongelma

1. InternStudio-kehityskoneympäristö on rikki. Miten kehityskoneympäristö alustetaan?

Suorita huolella! ! ! !Kaikki tiedot menetetään. Tämä on käytettävissä vain InternStudio-alustalla. Älä tee tätä omalla koneellasi.

  • Ensimmäinen askel on yhdistää paikallinen pääte kehityskoneeseen ssh:n kautta (täytyy liittää ssh:n kautta toimiakseen, ei verkossa!!!)
  • Toisen vaiheen suoritus rm -rf /root, odotus kestää noin 10 minuuttia
  • Kolmas vaihe on käynnistää kehityskone uudelleen. Järjestelmä nollaa /root-polun määritystiedoston.
  • neljäs vaihe ln -s /share /root/share

Tason tehtävä

Jotta voit läpäistä tason tehtävän, sinun on otettava kuvakaappaukset avainvaiheissa:

tehtävän tiedotValmistukseen vaadittu aika
TehtäväViimeistele SSH-yhteys ja porttikartoitus ja suoritahello_world.py10 min
Valinnainen tehtävä 1Suorita Linuxin peruskomennot kehityskoneella10 min
Valinnainen tehtävä 2Käytä VSCODEa muodostaaksesi etäyhteyden kehityskoneeseen ja luodaksesi conda-ympäristön10 min
Valinnainen tehtävä 3Luo ja suoritatest.shasiakirja10 min