Rumah > Artikel > Peranti teknologi > Amalan penggunaan penyetempatan Alpaca-lora model bahasa besar GPT
Model Alpaca ialah model sumber terbuka LLM (Model Bahasa Besar, bahasa besar) yang dibangunkan oleh Universiti Stanford Ia adalah model yang diperhalusi pada arahan 52K daripada LLaMA 7B (7B terbuka sumber oleh Syarikat Meta), dengan 7 bilion parameter model (lebih besar parameter model, lebih kuat keupayaan penaakulan model, dan sudah tentu lebih tinggi kos melatih model).
LoRA, nama penuh bahasa Inggeris ialah Penyesuaian Peringkat Rendah bagi Model Bahasa Besar, diterjemahkan secara literal sebagai penyesuaian tahap rendah model bahasa besar Ini adalah teknologi yang dibangunkan oleh penyelidik Microsoft untuk menyelesaikan penalaan halus model bahasa. Jika anda mahu model bahasa besar yang telah dilatih untuk dapat melaksanakan tugas dalam bidang tertentu, anda biasanya perlu melakukan penalaan halus Walau bagaimanapun, dimensi parameter model bahasa besar yang pada masa ini mahir dalam penaakulan adalah sangat, sangat besar , malah ada yang ratusan bilion dimensi Jika anda secara langsung Melakukan penalaan halus pada model bahasa yang besar akan memerlukan jumlah pengiraan yang sangat besar dan kos yang sangat tinggi.
Pendekatan LoRA adalah untuk membekukan parameter model yang telah dilatih, dan kemudian menyuntik lapisan boleh dilatih ke dalam setiap blok Transformer Memandangkan tidak ada keperluan untuk mengira semula kecerunan parameter model, ia akan mengurangkan kuantiti pengiraan. .
Seperti yang ditunjukkan dalam rajah di bawah, idea teras adalah untuk menambah pintasan pada model asal yang telah dilatih dan melakukan pengurangan dimensi dan kemudian operasi dimensi. Semasa latihan, parameter model pra-latihan adalah tetap, dan hanya matriks pengurangan dimensi A dan matriks peningkatan dimensi B dilatih. Dimensi input dan output model kekal tidak berubah, dan BA dan parameter model bahasa pra-latihan ditindih pada output.
Mulakan A dengan taburan Gaussian rawak dan mulakan B dengan matriks 0. Ini memastikan bahawa BA=0 pintasan baharu semasa latihan, dengan itu tidak memberi kesan kepada keputusan model. Semasa penaakulan, hasil bahagian kiri dan kanan ditambah bersama, iaitu, h=Wx+BAx=(W+BA)x Oleh itu, tambahkan sahaja produk matriks BA selepas latihan dan matriks berat asal W sebagai yang baharu berat. Parameter boleh digantikan dengan W model bahasa asal yang telah dilatih, dan tiada sumber pengkomputeran tambahan akan ditambahkan. Kelebihan terbesar LoRA ialah ia melatih lebih cepat dan menggunakan kurang memori.
Model Alpaca-lora yang digunakan untuk amalan penggunaan setempat dalam artikel ini ialah versi tersuai tertib rendah bagi model Alpaca. Artikel ini akan mempraktikkan proses penempatan penyetempatan, penalaan halus dan inferens model Alpaca-lora dan menerangkan langkah-langkah yang berkaitan.
Pelayan GPU yang digunakan dalam artikel ini mempunyai 4 GPU bebas, modelnya ialah P40 dan satu P40 mempunyai pengkomputeran yang sama kuasa sebagai 60 Kuasa pengkomputeran CPU dengan frekuensi utama yang sama.
Jika anda merasakan bahawa kad fizikal terlalu mahal hanya untuk ujian, anda juga boleh menggunakan "versi pengganti" - pelayan awan GPU. Berbanding dengan kad fizikal, membina pelayan awan GPU bukan sahaja dapat memastikan pengkomputeran berprestasi tinggi yang fleksibel, tetapi juga mempunyai faedah ini -
Hos awan GPU JD Cloud sedang melakukan 618 aktiviti, yang sangat menjimatkan kos
https://www.php.cn/link/5d3145e1226fd39ee3b3039bfa90c95d
Apabila kami mendapat pelayan GPU, kami mula-mula memasang pemacu kad grafik dan pemacu CUDA (iaitu platform pengkomputeran yang dilancarkan oleh pengeluar kad grafik NVIDIA. CUDA ialah seni bina pengkomputeran selari am dilancarkan oleh NVIDIA, yang membolehkan Keupayaan GPU menyelesaikan masalah pengiraan yang kompleks).
Pemandu kad grafik perlu pergi ke tapak web rasmi NVIDIA untuk mencari model kad grafik yang sepadan dan versi CUDA yang disesuaikan:
https://www.nvidia.com/Download/index.aspx , pilih Anda boleh memuat turun fail pemacu untuk kad grafik dan versi CUDA yang sepadan.
Fail yang saya muat turun ialah
NVIDIA-Linux-x86_64-515.105.01.run, ini adalah fail boleh laku, anda boleh melaksanakannya dengan kebenaran root Ambil perhatian bahawa proses nvidia tidak boleh dijalankan semasa proses pemasangan pemacu. jika tidak, ia akan Pemasangan gagal, seperti yang ditunjukkan dalam rajah di bawah:
Kemudian teruskan ke seterusnya Jika tiada ralat dilaporkan, pemasangan berjaya. Untuk menyemak sumber kad grafik kemudian, lebih baik memasang alat pemantauan kad grafik lain, seperti nvitop, hanya gunakan pip install nvitop Perhatikan di sini bahawa kerana versi ular sawa pelayan berbeza adalah yang terbaik untuk memasang anaconda untuk menggunakan ruang ular sawa peribadi anda untuk mengelakkan Pelbagai ralat pelik berlaku semasa menjalankan:
1. Pasang anaconda /archive/Anaconda3-5.3.0-Linux-x86_64 .sh. Arahan pemasangan: sh Anaconda3-5.3.0-Linux-x86_64.sh Masukkan "ya" untuk setiap langkah pemasangan, dan akhirnya selesaikan pemasangan selepas conda init, supaya setiap kali anda memasuki sesi pengguna pemasangan, anda akan terus memasuki sesi anda sendiri persekitaran python. Jika anda memilih tidak dalam langkah terakhir pemasangan, iaitu conda init tidak dilakukan, anda kemudian boleh memasuki persekitaran python peribadi melalui sumber /home/jd_ad_sfxn/anaconda3/bin/activate.
https://files.pythonhosted.org/packages/26/e5/9897eee1100b166a61f91f91b69528c91b68528c91b68528c91b69528c91b68528c91b68528c91b68528c91b94b9f9b8b8c8c9fbf 4b79/alat persediaan -40.5.0 .zip arahan pemasangan: unzip setuptools-40.5.0.zip cd setuptools-40.5.0/ python setup.py install
https:// files.pythonhosted. org/packages/45/ae/8a0ad77defb7cc903f09e551d88b443304a9bd6e6f124e75c0fbbf6de8f7/pip-18.1.tar.gz Arahan pemasangan: pittar -xz8fcd.piptar. .py pasang
conda create -n alpaca pythnotallow=3.9conda activate alpacadan kemudian sahkannya Seperti yang ditunjukkan dalam rajah di bawah, ia menunjukkan bahawa ia telah berjaya dibuat . Latihan modelPersekitaran asas pelayan GPU telah dipasang di atas, dan kini kami akan memulakan latihan model yang menarik (menyenangkan ) , sebelum latihan kita perlu memuat turun fail model terlebih dahulu, alamat muat turun:
https://github.com/tloen/alpaca-lora, keseluruhan model adalah sumber terbuka, yang sangat bagus! Mula-mula, muat turun fail model secara tempatan dan laksanakan git clone https://github.com/tloen/alpaca-lora.git.
pip install -r requirements.txtProses ini mungkin perlahan dan memerlukan memuat turun sejumlah besar pakej pergantungan daripada Internet. Pelbagai konflik pakej dan kebergantungan yang hilang juga mungkin dilaporkan Di kawasan ini, anda hanya boleh mencuba untuk mengetahui perkara yang hilang (Menyelesaikan kebergantungan pakej dan konflik versi memang menyusahkan. Walau bagaimanapun, jika langkah ini tidak dilakukan dengan baik. model juga akan berjalan tidak boleh bangun, jadi saya hanya boleh menyelesaikannya dengan sabar sedikit demi sedikit). tak hebat sangat. Jika proses pemasangan selesai, tiada mesej ralat dilaporkan, dan gesaan Berjaya selesai, maka tahniah, anda sudah separuh jalan melalui perarakan jauh beribu-ribu batu, dan anda hampir mencapai kejayaan berterusan. Ia berkemungkinan besar untuk berjaya :). Memandangkan matlamat kami adalah untuk memperhalusi model, kami perlu mempunyai matlamat penalaan halus Memandangkan model asal tidak menyokong bahasa Cina dengan baik, matlamat kami adalah untuk menggunakan korpus Cina Untuk menjadikan model itu lebih baik sokong bahasa Cina, komuniti ini juga telah menyediakannya untuk saya. Kami hanya boleh memuat turun korpus Cina secara langsung dan melaksanakan wget secara setempat
https://github.com/LC1332/Chinese-alpaca-lora/ blob/main/data/trans_chinese_alpaca_data .json?raw=true, muat turun korpus yang digunakan untuk latihan model kemudian ke direktori akar alpaca-lora (untuk kemudahan penggunaan kemudian).
好的,到现在为止,万里长征已经走完2/3了,别着急训练模型,我们现在验证一下GPU环境和CUDA版本信息,还记得之前我们安装的nvitop嘛,现在就用上了,在本地直接执行nvitop,我们就可以看到GPU环境和CUDA版本信息了,如下图:
在这里我们能够看到有几块显卡,驱动版本和CUDA版本等信息,当然最重要的我们还能看到GPU资源的实时使用情况。
怎么还没到模型训练呢,别着急呀,这就来啦。
我们先到根目录下然后执行训练模型命令:
如果是单个GPU,那么执行命令即可:
python finetune.py \--base_model 'decapoda-research/llama-7b-hf' \--data_path 'trans_chinese_alpaca_data.json' \--output_dir './lora-alpaca-zh'
如果是多个GPU,则执行:
WORLD_SIZE=2 CUDA_VISIBLE_DEVICES=0,1 torchrun \--nproc_per_node=2 \--master_port=1234 \finetune.py \--base_model 'decapoda-research/llama-7b-hf' \--data_path 'trans_chinese_alpaca_data.json' \--output_dir './lora-alpaca-zh'
如果可以看到进度条在走,说明模型已经启动成功啦。
在模型训练过程中,每迭代一定数量的数据就会打印相关的信息,会输出损失率,学习率和代信息,如上图所示,当loss波动较小时,模型就会收敛,最终训练完成。
我用的是2块GPU显卡进行训练,总共训练了1904分钟,也就是31.73个小时,模型就收敛了,模型训练是个漫长的过程,所以在训练的时候我们可以适当的放松一下,做点其他的事情:)。
模型训练好后,我们就可以测试一下模型的训练效果了,由于我们是多个GPU显卡,所以想把模型参数加载到多个GPU上,这样会使模型推理的更快,需要修改
generate.py 文件,添加下面这样即可。
然后我们把服务启起来,看看效果,根目录执行:
python generate.py --base_model "decapoda-research/llama-7b-hf" \--lora_weights './lora-alpaca-zh' \--load_8bit
其中./lora-alpaca-zh目录下的文件,就是我们刚刚fine tuning模型训练的参数所在位置,启动服务的时候把它加载到内存(这个内存指的是GPU内存)里面。
如果成功,那么最终会输出相应的IP和Port信息,如下图所示:
我们可以用浏览器访问一下看看,如果能看到页面,就说明服务已经启动成功啦。
激动ing,费了九牛二虎之力,终于成功啦!!
因为我们目标是让模型说中文,所以我们测试一下对中文的理解,看看效果怎么样?
简单的问题,还是能给出答案的,但是针对稍微复杂一点的问题,虽然能够理解中文,但是并没有用中文进行回答,训练后的模型还是不太稳定啊。
在推理的时候我们也可以监控一下GPU的变化,可以看到GPU负载是比较高的,说明GPU在进行大量的计算来完成推理。
1.效果问题:由于语料库不够丰富,所以目前用社区提供的语料库训练的效果并不是很好,对中文的理解力有限,如果想训练出能够执行特定领域的任务,则需要大量的语料支持,同时训练时间也会更长;
2. Masalah masa inferens: Memandangkan pelayan GPU yang digunakan pada masa ini mempunyai 4 GPU, 3 daripadanya boleh dilaksanakan Berdasarkan 3 GPU, inferens masih agak sukar untuk melaksanakan interaksi kembali dalam masa nyata seperti chatGPT, ia akan memerlukan banyak kuasa pengkomputeran untuk menyokongnya Ia boleh disimpulkan bahawa bahagian belakang chatGPT mesti disokong oleh sekumpulan besar kuasa pengkomputeran, jadi jika anda ingin menjadikannya perkhidmatan, kos. pelaburan adalah isu yang perlu dipertimbangkan;
3 Masalah kod bercelaru: Apabila input adalah bahasa Cina, kadangkala hasil yang dipulangkan akan disyaki berkaitan dengan pembahagian perkataan masalah pengekodan, bahasa Cina tidak dipisahkan oleh ruang seperti bahasa Inggeris, jadi mungkin terdapat ralat tertentu akan berlaku, dan ini juga akan berlaku apabila memanggil API AI terbuka Kami akan melihat jika komuniti mempunyai penyelesaian yang sepadan kemudian 🎜>4. Masalah pemilihan model: Memandangkan komuniti GPT pada masa ini agak aktif, penjanaan dan perubahan model Ia juga berubah setiap hari Disebabkan kesibukan masa, kami hanya menyiasat penggunaan setempat alpaca-. model lora. Perlu ada rancangan pelaksanaan yang lebih baik dan berkos rendah untuk pelaksanaan sebenar pada masa hadapan.
Untuk butiran tentang amalan [model bahasa ChatGLM] GPU model JD Cloud P40:
https://www.php.cn/link/f044bd02e4fe1aa3315ace7645f8597aSumber kandungan: JD Cloud Developer Community
Atas ialah kandungan terperinci Amalan penggunaan penyetempatan Alpaca-lora model bahasa besar GPT. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!