国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
FSDP Q-Lora 背景知識(shí)
設(shè)定開(kāi)發(fā)環(huán)境
建立並載入資料集
使用 PyTorch FSDP、Q-Lora 和 SDPA 來(lái)微調(diào) LLM
可選步驟:將 LoRA 的適配器融入原始模型
首頁(yè) 科技週邊 人工智慧 只要250美元,Hugging Face技術(shù)主管手把手教你微調(diào)Llama 3

只要250美元,Hugging Face技術(shù)主管手把手教你微調(diào)Llama 3

May 06, 2024 pm 03:52 PM
python ai 訓(xùn)練 記憶體佔(zhàn)用

僅用250美元,Hugging Face技術(shù)主管手把手教你微調(diào)Llama 3

我們熟悉的Meta推出的Llama 3、Mistral AI推出的Mistral和Mixtral模型以及AI21實(shí)驗(yàn)室推出的Jamba等開(kāi)源大語(yǔ)言模型已經(jīng)成為OpenAI的競(jìng)爭(zhēng)對(duì)手。

在大多數(shù)情況下,使用者需要根據(jù)自己的資料對(duì)這些開(kāi)源模型進(jìn)行微調(diào),才能充分釋放模型的潛力。

在單一GPU上使用Q-Learning對(duì)比小的大語(yǔ)言模型(如Mistral)進(jìn)行微調(diào)不是難事,但對(duì)像Llama 370b或Mixtral這樣的大模型的高效微調(diào)直到現(xiàn)在仍然是一個(gè)挑戰(zhàn)。

因此,Hugging Face技術(shù)主管Philipp Schmid介紹如何利用PyTorch FSDP和Q-Lora,並在Hugging Face的TRL、Transformers、peft和datasets庫(kù)的幫助下,對(duì)Llama 3進(jìn)行微調(diào)。除了FSDP,作者也對(duì)PyTorch 2.2更新後的Flash Attention v2進(jìn)行了適配。

微調(diào)主要步驟如下:

  • 設(shè)定開(kāi)發(fā)環(huán)境
  • 建立並載入資料集
  • 使用PyTorch FSDP、Q-Lora 和SDPA 微調(diào)大語(yǔ)言模型
  • 測(cè)試模型並進(jìn)行推理

請(qǐng)注意:本文進(jìn)行的實(shí)驗(yàn)是在英偉達(dá)(NVIDIA)H100和英偉達(dá)(NVIDIA)A10G GPU上建立和驗(yàn)證的。設(shè)定檔和程式碼針對(duì)4xA10G GPU進(jìn)行了最佳化,每個(gè)GPU均配備24GB記憶體。如果用戶(hù)有更多的算力,第3步提到的設(shè)定檔(yaml檔)需要做相應(yīng)的修改。

FSDP Q-Lora 背景知識(shí)

基於Answer.AI、Q-Lora創(chuàng)始人Tim Dettmers和Hugging Face共同參與的合作項(xiàng)目,作者對(duì)Q-Lora和PyTorch FSDP(完全共享數(shù)據(jù)並行)所能提供的技術(shù)支援進(jìn)行了總結(jié)。

FSDP和Q-Lora的結(jié)合使用能夠讓用戶(hù)在2個(gè)消費(fèi)級(jí)GPU(24GB)上就能對(duì)Llama 270b或Mixtral 8x7B進(jìn)行微調(diào),細(xì)節(jié)可參考下面文章。其中Hugging Face的PEFT庫(kù)對(duì)此有至關(guān)重要的作用。

文章地址:https://www.answer.ai/posts/2024-03-06-fsdp-qlora.html

PyTorch FSDP 是一種資料/ 模型平行技術(shù),它可以跨GPU 分割模型,減少記憶體需求,並能夠更有效地訓(xùn)練更大的模型。 Q-LoRA 是一種微調(diào)方法,它利用量化和低秩適配器來(lái)有效地減少計(jì)算需求和記憶體佔(zhàn)用。

設(shè)定開(kāi)發(fā)環(huán)境

第一步是安裝 Hugging Face Libraries 以及 Pyroch,包括 trl、transformers 和 datasets 等函式庫(kù)。 trl 是建立在 transformers 和 datasets 基礎(chǔ)上的一個(gè)新函式庫(kù),能讓對(duì)開(kāi)源大語(yǔ)言模型進(jìn)行微調(diào)、RLHF 和對(duì)齊變得更容易。

# Install Pytorch for FSDP and FA/SDPA%pip install "torch==2.2.2" tensorboard# Install Hugging Face libraries%pip install--upgrade "transformers==4.40.0" "datasets==2.18.0" "accelerate==0.29.3" "evaluate==0.4.1" "bitsandbytes==0.43.1" "huggingface_hub==0.22.2" "trl==0.8.6" "peft==0.10.0"

接下來(lái),登入 Hugging Face 取得 Llama 3 70b 模型。

建立並載入資料集

環(huán)境設(shè)定完成後,我們就可以開(kāi)始建立和準(zhǔn)備資料集了。微調(diào)用的資料集應(yīng)該包含使用者想要解決的任務(wù)的範(fàn)例樣本。閱讀《如何在 2024 年使用 Hugging Face 微調(diào) LLM》可以進(jìn)一步了解如何建立資料集。

文章網(wǎng)址:https://www.philschmid.de/fine-tune-llms-in-2024-with-trl#3-create-and-prepare-the-dataset

作者使用了HuggingFaceH4/no_robots 資料集,這是一個(gè)包含10,000 條指令和樣本的高品質(zhì)資料集,並且經(jīng)過(guò)了高品質(zhì)的資料標(biāo)註。這些數(shù)據(jù)可用於有監(jiān)督微調(diào)(SFT),使語(yǔ)言模型更好地遵循人類(lèi)指令。 no_robots 資料集以 OpenAI 發(fā)表的 InstructGPT 論文中所述的人類(lèi)指令資料集為原型,並且主要由單句指令組成。

{"messages": [{"role": "system", "content": "You are..."}, {"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]}{"messages": [{"role": "system", "content": "You are..."}, {"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]}{"messages": [{"role": "system", "content": "You are..."}, {"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]}

no_robots 資料集中的 10,000 個(gè)樣本,被分為 9,500 個(gè)訓(xùn)練樣本和 500 個(gè)測(cè)試樣本,其中有些樣本不包含 system 資訊。作者使用 datasets 庫(kù)加載資料集,添加了缺少的 system 信息,並將它們保存到單獨(dú)的 json 文件中。範(fàn)例程式碼如下所示:

from datasets import load_dataset# Convert dataset to OAI messagessystem_message = """You are Llama, an AI assistant created by Philipp to be helpful and honest. Your knowledge spans a wide range of topics, allowing you to engage in substantive conversations and provide analysis on complex subjects."""def create_conversation(sample):if sample["messages"][0]["role"] == "system":return sampleelse:sample["messages"] = [{"role": "system", "content": system_message}] + sample["messages"]return sample# Load dataset from the hubdataset = load_dataset("HuggingFaceH4/no_robots")# Add system message to each conversationcolumns_to_remove = list(dataset["train"].features)columns_to_remove.remove("messages")dataset = dataset.map(create_conversation, remove_columns=columns_to_remove,batched=False)# Filter out conversations which are corrupted with wrong turns, keep which have even number of turns after adding system messagedataset["train"] = dataset["train"].filter(lambda x: len(x["messages"][1:]) % 2 == 0)dataset["test"] = dataset["test"].filter(lambda x: len(x["messages"][1:]) % 2 == 0)# save datasets to diskdataset["train"].to_json("train_dataset.json", orient="records", force_ascii=False)dataset["test"].to_json("test_dataset.json", orient="records", force_ascii=False)

使用 PyTorch FSDP、Q-Lora 和 SDPA 來(lái)微調(diào) LLM

接下來(lái)使用 PyTorch FSDP、Q-Lora 和 SDPA 對(duì)大語(yǔ)言模型進(jìn)行微調(diào)。作者是在分布式設(shè)備中運(yùn)行模型,因此需要使用 torchrun 和 python 腳本啟動(dòng)訓(xùn)練。

作者編寫(xiě)了 run_fsdp_qlora.py 腳本,其作用是從磁盤(pán)加載數(shù)據(jù)集、初始化模型和分詞器并開(kāi)始模型訓(xùn)練。腳本使用 trl 庫(kù)中的 SFTTrainer 來(lái)對(duì)模型進(jìn)行微調(diào)。

SFTTrainer 能夠讓對(duì)開(kāi)源大語(yǔ)言模型的有監(jiān)督微調(diào)更加容易上手,具體來(lái)說(shuō)有以下幾點(diǎn):

格式化的數(shù)據(jù)集,包括格式化的多輪會(huì)話(huà)和指令(已使用)只對(duì)完整的內(nèi)容進(jìn)行訓(xùn)練,忽略只有 prompts 的情況(未使用)打包數(shù)據(jù)集,提高訓(xùn)練效率(已使用)支持參數(shù)高效微調(diào)技術(shù),包括 Q-LoRA(已使用)為會(huì)話(huà)級(jí)任務(wù)微調(diào)初始化模型和分詞器(未使用,見(jiàn)下文)

注意:作者使用的是類(lèi)似于 Anthropic/Vicuna 的聊天模板,設(shè)置了「用戶(hù)」和「助手」角色。這樣做是因?yàn)榛A(chǔ) Llama 3 中的特殊分詞器(<|begin_of_text|> 及 <|reserved_special_token_XX|>)沒(méi)有經(jīng)過(guò)訓(xùn)練。

這意味著如果要在模板中使用這些分詞器,還需要對(duì)它們進(jìn)行訓(xùn)練,并更新嵌入層和 lm_head,對(duì)內(nèi)存會(huì)產(chǎn)生額外的需求。如果使用者有更多的算力,可以修改 run_fsdp_qlora.py 腳本中的 LLAMA_3_CHAT_TEMPLATE 環(huán)境變量。

在配置參數(shù)方面,作者使用了新的 TrlParser 變量,它允許我們?cè)?yaml 文件中提供超參數(shù),或者通過(guò)明確地將參數(shù)傳遞給 CLI 來(lái)覆蓋配置文件中的參數(shù),例如 —num_epochs 10。以下是在 4x A10G GPU 或 4x24GB GPU 上微調(diào) Llama 3 70B 的配置文件。

%%writefile llama_3_70b_fsdp_qlora.yaml# script parametersmodel_id: "meta-llama/Meta-Llama-3-70b" # Hugging Face model iddataset_path: "."# path to datasetmax_seq_len:3072 # 2048# max sequence length for model and packing of the dataset# training parametersoutput_dir: "./llama-3-70b-hf-no-robot" # Temporary output directory for model checkpointsreport_to: "tensorboard" # report metrics to tensorboardlearning_rate: 0.0002# learning rate 2e-4lr_scheduler_type: "constant"# learning rate schedulernum_train_epochs: 3# number of training epochsper_device_train_batch_size: 1 # batch size per device during trainingper_device_eval_batch_size: 1# batch size for evaluationgradient_accumulation_steps: 2 # number of steps before performing a backward/update passoptim: adamw_torch # use torch adamw optimizerlogging_steps: 10# log every 10 stepssave_strategy: epoch # save checkpoint every epochevaluation_strategy: epoch # evaluate every epochmax_grad_norm: 0.3 # max gradient normwarmup_ratio: 0.03 # warmup ratiobf16: true # use bfloat16 precisiontf32: true # use tf32 precisiongradient_checkpointing: true # use gradient checkpointing to save memory# FSDP parameters: https://huggingface.co/docs/transformers/main/en/fsdpfsdp: "full_shard auto_wrap offload" # remove offload if enough GPU memoryfsdp_config:backward_prefetch: "backward_pre"forward_prefetch: "false"use_orig_params: "false"

注意:訓(xùn)練結(jié)束時(shí),GPU 內(nèi)存使用量會(huì)略有增加(約 10%),這是因?yàn)槟P捅4嫠鶐?lái)的開(kāi)銷(xiāo)。所以使用時(shí),請(qǐng)確保 GPU 上有足夠的內(nèi)存來(lái)保存模型。

在啟動(dòng)模型訓(xùn)練階段,作者使用 torchrun 來(lái)更加靈活地運(yùn)用樣本,并且易于被調(diào)整,就像 Amazon SageMaker 及 Google Cloud Vertex AI 一樣。

對(duì)于 torchrun 和 FSDP,作者需要對(duì)環(huán)境變量 ACCELERATE_USE_FSDP 和 FSDP_CPU_RAM_EFFICIENT_LOADING 進(jìn)行設(shè)置,來(lái)告訴 transformers/accelerate 使用 FSDP 并以節(jié)省內(nèi)存的方式加載模型。

注意:如果想不使用 CPU offloading 功能,需要更改 fsdp 的設(shè)置。這種操作只適用于內(nèi)存大于 40GB 的 GPU。

本文使用以下命令啟動(dòng)訓(xùn)練:

!ACCELERATE_USE_FSDP=1 FSDP_CPU_RAM_EFFICIENT_LOADING=1 torchrun --nproc_per_node=4 ./scripts/run_fsdp_qlora.py --config llama_3_70b_fsdp_qlora.yaml

預(yù)期內(nèi)存使用情況:

  • 使用 FSDP 進(jìn)行全微調(diào)需要約 16 塊 80GB 內(nèi)存的 GPU
  • FSDP+LoRA 需要約 8 塊 80GB 內(nèi)存的 GPU
  • FSDP+Q-Lora 需要約 2 塊 40GB 內(nèi)存的 GPU
  • FSDP+Q-Lora+CPU offloading 技術(shù)需要 4 塊 24GB 內(nèi)存的 GPU,以及一塊具備 22 GB 內(nèi)存的 GPU 和 127 GB 的 CPU RAM,序列長(zhǎng)度為 3072、batch 大小為 1。

在 g5.12xlarge 服務(wù)器上,基于包含 1 萬(wàn)個(gè)樣本的數(shù)據(jù)集,作者使用 Flash Attention 對(duì) Llama 3 70B 進(jìn)行 3 個(gè) epoch 的訓(xùn)練,總共需要 45 小時(shí)。每小時(shí)成本為 5.67 美元,總成本為 255.15 美元。這聽(tīng)起來(lái)很貴,但可以讓你在較小的 GPU 資源上對(duì) Llama 3 70B 進(jìn)行微調(diào)。

如果我們將訓(xùn)練擴(kuò)展到 4x H100 GPU,訓(xùn)練時(shí)間將縮短至大約 125 小時(shí)。如果假設(shè) 1 臺(tái) H100 的成本為 5-10 美元 / 小時(shí),那么總成本將在 25-50 美元之間。

我們需要在易用性和性能之間做出權(quán)衡。如果能獲得更多更好的計(jì)算資源,就能減少訓(xùn)練時(shí)間和成本,但即使只有少量資源,也能對(duì) Llama 3 70B 進(jìn)行微調(diào)。對(duì)于 4x A10G GPU 而言,需要將模型加載到 CPU 上,這就降低了總體 flops,因此成本和性能會(huì)有所不同。

注意:在作者進(jìn)行的評(píng)估和測(cè)試過(guò)程中,他注意到大約 40 個(gè)最大步長(zhǎng)(將 80 個(gè)樣本堆疊為長(zhǎng)度為三千的序列)就足以獲得初步結(jié)果。40 個(gè)步長(zhǎng)的訓(xùn)練時(shí)間約為 1 小時(shí),成本約合 5 美元。

可選步驟:將 LoRA 的適配器融入原始模型

使用 QLoRA 時(shí),作者只訓(xùn)練適配器而不對(duì)整個(gè)模型做出修改。這意味著在訓(xùn)練過(guò)程中保存模型時(shí),只保存適配器權(quán)重,而不保存完整模型。

如果使用者想保存完整的模型,使其更容易與文本生成推理器一起使用,則可以使用 merge_and_unload 方法將適配器權(quán)重合并到模型權(quán)重中,然后使用 save_pretrained 方法保存模型。這將保存一個(gè)默認(rèn)模型,可用于推理。

注意:CPU 內(nèi)存需要大于 192GB。

#### COMMENT IN TO MERGE PEFT AND BASE MODEL ##### from peft import AutoPeftModelForCausalLM# # Load PEFT model on CPU# model = AutoPeftModelForCausalLM.from_pretrained(# args.output_dir,# torch_dtype=torch.float16,# low_cpu_mem_usage=True,# )# # Merge LoRA and base model and save# merged_model = model.merge_and_unload()# merged_model.save_pretrained(args.output_dir,safe_serialization=True, max_shard_size="2GB")

模型測(cè)試和推理

訓(xùn)練完成后,我們要對(duì)模型進(jìn)行評(píng)估和測(cè)試。作者從原始數(shù)據(jù)集中加載不同的樣本,并手動(dòng)評(píng)估模型。評(píng)估生成式人工智能模型并非易事,因?yàn)橐粋€(gè)輸入可能有多個(gè)正確的輸出。閱讀《評(píng)估 LLMs 和 RAG,一個(gè)使用 Langchain 和 Hugging Face 的實(shí)用案例》可以了解到關(guān)于評(píng)估生成模型的相關(guān)內(nèi)容。

文章地址:https://www.philschmid.de/evaluate-llm

import torchfrom peft import AutoPeftModelForCausalLMfrom transformers import AutoTokenizerpeft_model_id = "./llama-3-70b-hf-no-robot"# Load Model with PEFT adaptermodel = AutoPeftModelForCausalLM.from_pretrained(peft_model_id,torch_dtype=torch.float16,quantization_config= {"load_in_4bit": True},device_map="auto")tokenizer = AutoTokenizer.from_pretrained(peft_model_id)

接下來(lái)加載測(cè)試數(shù)據(jù)集,嘗試生成指令。

from datasets import load_datasetfrom random import randint# Load our test dataseteval_dataset = load_dataset("json", data_files="test_dataset.json", split="train")rand_idx = randint(0, len(eval_dataset))messages = eval_dataset[rand_idx]["messages"][:2]# Test on sampleinput_ids = tokenizer.apply_chat_template(messages,add_generation_prompt=True,return_tensors="pt").to(model.device)outputs = model.generate(input_ids,max_new_tokens=512,eos_token_id= tokenizer.eos_token_id,do_sample=True,temperature=0.6,top_p=0.9,)response = outputs[0][input_ids.shape[-1]:]print(f"**Query:**\n{eval_dataset[rand_idx]['messages'][1]['content']}\n")print(f"**Original Answer:**\n{eval_dataset[rand_idx]['messages'][2]['content']}\n")print(f"**Generated Answer:**\n{tokenizer.decode(response,skip_special_tokens=True)}")# **Query:**# How long was the Revolutionary War?# **Original Answer:**# The American Revolutionary War lasted just over seven years. The war started on April 19, 1775, and ended on September 3, 1783.# **Generated Answer:**# The Revolutionary War, also known as the American Revolution, was an 18th-century war fought between the Kingdom of Great Britain and the Thirteen Colonies. The war lasted from 1775 to 1783.

至此,主要流程就介紹完了,心動(dòng)不如行動(dòng),趕緊從第一步開(kāi)始操作吧。

以上是只要250美元,Hugging Face技術(shù)主管手把手教你微調(diào)Llama 3的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線(xiàn)上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話(huà)題

Laravel 教程
1601
29
PHP教程
1502
276
python shutil rmtree示例 python shutil rmtree示例 Aug 01, 2025 am 05:47 AM

shutil.rmtree()是Python中用於遞歸刪除整個(gè)目錄樹(shù)的函數(shù),能刪除指定文件夾及其所有內(nèi)容。 1.基本用法:使用shutil.rmtree(path)刪除目錄,需處理FileNotFoundError、PermissionError等異常。 2.實(shí)際應(yīng)用:可一鍵清除包含子目錄和文件的文件夾,如臨時(shí)數(shù)據(jù)或緩存目錄。 3.注意事項(xiàng):刪除操作不可恢復(fù);路徑不存在時(shí)拋出FileNotFoundError;可能因權(quán)限或文件佔(zhàn)用導(dǎo)致失敗。 4.可選參數(shù):可通過(guò)ignore_errors=True忽略錯(cuò)

如何在Python中執(zhí)行SQL查詢(xún)? 如何在Python中執(zhí)行SQL查詢(xún)? Aug 02, 2025 am 01:56 AM

安裝對(duì)應(yīng)數(shù)據(jù)庫(kù)驅(qū)動(dòng);2.使用connect()連接數(shù)據(jù)庫(kù);3.創(chuàng)建cursor對(duì)象;4.用execute()或executemany()執(zhí)行SQL並用參數(shù)化查詢(xún)防注入;5.用fetchall()等獲取結(jié)果;6.修改後需commit();7.最後關(guān)閉連接或使用上下文管理器自動(dòng)處理;完整流程確保安全且高效執(zhí)行SQL操作。

為什麼Safari使用這麼多內(nèi)存? 為什麼Safari使用這麼多內(nèi)存? Aug 03, 2025 am 03:13 AM

Safari使用大量?jī)?nèi)存的主要原因包括同時(shí)打開(kāi)過(guò)多標(biāo)簽頁(yè)、后臺(tái)進(jìn)程和擴(kuò)展程序、緩存數(shù)據(jù)堆積以及舊版本系統(tǒng)或?yàn)g覽器。首先,打開(kāi)太多標(biāo)簽會(huì)顯著增加內(nèi)存消耗,建議僅保留必要標(biāo)簽,使用書(shū)簽或“閱讀列表”保存稍后查看的內(nèi)容,并定期關(guān)閉不再使用的舊標(biāo)簽。其次,后臺(tái)擴(kuò)展和預(yù)加載內(nèi)容也會(huì)占用內(nèi)存,應(yīng)進(jìn)入“偏好設(shè)置”>“擴(kuò)展”禁用不必要的插件,并關(guān)閉“網(wǎng)站”選項(xiàng)中的“預(yù)載最佳匹配”。第三,定期清理歷史記錄和緩存數(shù)據(jù)可減少內(nèi)存負(fù)擔(dān),可在“隱私”中點(diǎn)擊“移除所有”進(jìn)行清除,并重啟Safari。最后,確保Safa

如何在Python中的多個(gè)過(guò)程之間共享數(shù)據(jù)? 如何在Python中的多個(gè)過(guò)程之間共享數(shù)據(jù)? Aug 02, 2025 pm 01:15 PM

使用multiprocessing.Queue可在多個(gè)進(jìn)程間安全傳遞數(shù)據(jù),適合多生產(chǎn)者和消費(fèi)者的場(chǎng)景;2.使用multiprocessing.Pipe可實(shí)現(xiàn)兩個(gè)進(jìn)程間的雙向高速通信,但僅限兩點(diǎn)連接;3.使用Value和Array可在共享內(nèi)存中存儲(chǔ)簡(jiǎn)單數(shù)據(jù)類(lèi)型,需配合Lock避免競(jìng)爭(zhēng)條件;4.使用Manager可共享複雜數(shù)據(jù)結(jié)構(gòu)如列表和字典,靈活性高但性能較低,適用於復(fù)雜共享狀態(tài)的場(chǎng)景;應(yīng)根據(jù)數(shù)據(jù)大小、性能需求和復(fù)雜度選擇合適方法,Queue和Manager最適合初學(xué)者使用。

Python Boto3 S3上傳示例 Python Boto3 S3上傳示例 Aug 02, 2025 pm 01:08 PM

使用boto3上傳文件到S3需先安裝boto3並配置AWS憑證;2.通過(guò)boto3.client('s3')創(chuàng)建客戶(hù)端並調(diào)用upload_file()方法上傳本地文件;3.可指定s3_key作為目標(biāo)路徑,若未指定則使用本地文件名;4.應(yīng)處理FileNotFoundError、NoCredentialsError和ClientError等異常;5.可通過(guò)ExtraArgs參數(shù)設(shè)置ACL、ContentType、StorageClass和Metadata;6.對(duì)於內(nèi)存數(shù)據(jù),可使用BytesIO創(chuàng)建字

如何使用Python中的列表實(shí)現(xiàn)堆棧數(shù)據(jù)結(jié)構(gòu)? 如何使用Python中的列表實(shí)現(xiàn)堆棧數(shù)據(jù)結(jié)構(gòu)? Aug 03, 2025 am 06:45 AM

PythonlistScani ImplementationAking append () Penouspop () Popopoperations.1.UseAppend () Two -Belief StotetopoftHestack.2.UseP OP () ToremoveAndreturnthetop element, EnsuringTocheckiftHestackisnotemptoavoidindexError.3.Pekattehatopelementwithstack [-1] on

以太坊閃耀:美國(guó)銀行開(kāi)啟數(shù)字資產(chǎn)追蹤,ETH 再成焦點(diǎn) 以太坊閃耀:美國(guó)銀行開(kāi)啟數(shù)字資產(chǎn)追蹤,ETH 再成焦點(diǎn) Aug 01, 2025 pm 08:09 PM

美國(guó)銀行開(kāi)啟數(shù)字資產(chǎn)追蹤標(biāo)誌著以太坊在主流金融的認(rèn)可度提升,1. 合法性認(rèn)可度提升;2. 可能吸引機(jī)構(gòu)配置數(shù)字資產(chǎn);3. 推動(dòng)合規(guī)化進(jìn)程;4. 確認(rèn)ETH作為“數(shù)字石油”的應(yīng)用前景和潛在價(jià)值;以太坊成為焦點(diǎn)因其擁有龐大的DApp生態(tài)系統(tǒng),1. 技術(shù)升級(jí)至PoS提升可擴(kuò)展性、安全性和可持續(xù)性;2. 作為DeFi核心支持借貸、交易等金融服務(wù);3. 支撐NFT繁榮鞏固生態(tài)需求;4. 拓展企業(yè)級(jí)應(yīng)用如供應(yīng)鏈管理;5. EIP-1559引入通縮機(jī)制提升稀缺性;頂尖交易平臺(tái)包括:1. Binance(交易量

歐易交易所APP安卓版 v6.132.0 歐易APP官網(wǎng)下載安裝指南2025 歐易交易所APP安卓版 v6.132.0 歐易APP官網(wǎng)下載安裝指南2025 Aug 04, 2025 pm 11:18 PM

歐易(OKX)是一款全球知名的數(shù)字資產(chǎn)綜合服務(wù)平臺(tái),為廣大用戶(hù)提供涵蓋現(xiàn)貨、合約、期權(quán)等在內(nèi)的多元化產(chǎn)品和服務(wù)。其官方APP憑藉流暢的操作體驗(yàn)和強(qiáng)大的功能集成,成為了許多數(shù)字資產(chǎn)用戶(hù)的常用工具。

See all articles