Dummy Light填充

在这里插入图片描述
在这里插入图片描述


什么是Dummy Light填充

Dummy Light(DL,假光)是指不携带业务信号的波长。Dummy Light填充是指除了携带业务信号的波长以外,将其他不携带业务信号的波长也全部开通,抑制由于加波或掉波引起的受激拉曼散射效应和增益竞争,从而保证光功率谱维持不变。

使用了Dummy Light填充技术后,如果出现业务故障,系统可以自动识别故障波道,并自动填充为假光。

Dummy Light填充的应用

在波分网络中,Dummy Light填充技术目前主要应用于C+L场景、拉曼场景、IPA(Intelligent Power Adjustment,智能功率调节功能)、遥泵系统等:

  • Dummy Light填充可以提升合波功率,满足合波检测点接收灵敏度要求,使业务能正常传输。
  • Dummy Light填充可以让OMS(Optical Multiplex section,光复用段)始终处于满波状态。此时,如果系统存在加波或掉波,受激拉曼散射效应和增益竞争造成的影响会被减小,光功率谱能够维持不变。

图5-27 Dummy Light填充

在这里插入图片描述

Dummy Light填充技术可以增加业务波安全性、提升系统稳定性,保证信号稳定传输。Dummy Light填充技术在波分网络中主要应用在开局调测、扩容或运维场景。

  • 开局调测场景:把所有规划波长全部开通,除去初始业务波道,其他波道均为不携带信号的假光,系统保持满波状态。
  • 扩容场景:直接采用OTU业务光替换对应波道假光,扩容后系统仍然维持满波状态。
  • 运维场景:被动掉波时,用假光快速填充掉波道,使故障下游的OMS快速恢复到满波状态。待故障恢复后,被动填充的假光有序撤离,业务光恢复,系统维持满波状态。

在这里插入图片描述

import os import torch import sys import types import importlib.util from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig # --------------------- 配置项(根据硬件调整) --------------------- MODEL_PATH = r"E:\LocalAI\AIModel\DeepSeek\DeepSeekV2LiteChat" # 模型路径 USE_4BIT = True # 启用4-bit量化(显存需求降至约10GB) USE_8BIT = False # 8-bit量化(显存需求约20GB) MAX_NEW_TOKENS = 200 # 生成文本最大长度(降低内存压力) DEVICE = "cuda" if torch.cuda.is_available() else "cpu" # --------------------- 量化配置(4-bit/8-bit) --------------------- quantization_config = None if USE_4BIT or USE_8BIT: quantization_config = BitsAndBytesConfig( load_in_4bit=USE_4BIT, load_in_8bit=USE_8BIT, bnb_4bit_compute_dtype=torch.float16, bnb_4bit_quant_type="nf4", # 4-bit量化类型 bnb_8bit_quant_type="nf8" if USE_8BIT else None ) # --------------------- 加载模型(跳过Flash Attention) --------------------- if sys.platform == "win32": if "flash_attn" not in sys.modules: # 创建一个 dummy 的 module spec dummy_spec = importlib.util.spec_from_loader("flash_attn", loader=None) dummy_module = types.ModuleType("flash_attn") dummy_module.__spec__ = dummy_spec # 根据模型代码中可能调用的函数名称添加 dummy 实现(仅返回 None) dummy_module.flash_attn_unpadded = lambda *args, **kwargs: None dummy_module.flash_attn_varlen_qkvpacked_func = lambda *args, **kwargs: None sys.modules["flash_attn"] = dummy_module # --------------------- 加载分词器 --------------------- tokenizer = AutoTokenizer.from_pretrained( MODEL_PATH, trust_remote_code=True, padding_side="left", # 左对齐避免生成错位 use_fast=True # 强制使用快速分词器 ) if tokenizer.pad_token is None: tokenizer.pad_token = tokenizer.eos_token # 确保有pad token # --------------------- 加载模型 --------------------- model = AutoModelForCausalLM.from_pretrained( MODEL_PATH, quantization_config=quantization_config, trust_remote_code=True ) # --------------------- 显存监控函数 --------------------- def print_gpu_memory(): if DEVICE == "cuda": allocated = torch.cuda.memory_allocated() / 1024**3 reserved = torch.cuda.memory_reserved() / 1024**3 print(f"[显存] 已分配: {allocated:.2f} GB | 保留: {reserved:.2f} GB") else: print("当前使用CPU运行") # --------------------- 轻量生成函数 --------------------- def light_generate(prompt: str): print("\n" + "="*30 + " 生成开始 " + "="*30) # 精简输入处理 inputs = tokenizer( f"<|startoftext|>User: {prompt}\nAssistant:", return_tensors="pt", max_length=512, # 限制输入长度 truncation=True ).to(DEVICE) # 低资源生成参数 outputs = model.generate( inputs.input_ids, max_new_tokens=MAX_NEW_TOKENS, do_sample=True, temperature=0.3, # 降低随机性 top_p=0.9, repetition_penalty=1.1, # 减少重复 pad_token_id=tokenizer.eos_token_id ) # 清理显存 torch.cuda.empty_cache() # 解码结果 generated = tokenizer.decode( outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True ) return generated.strip() # --------------------- 测试运行 --------------------- if __name__ == "__main__": print_gpu_memory() # 初始显存状态 # 测试样例(短文本验证基础功能) test_prompts = [ "请输出我问过你的问题" ] for prompt in test_prompts: print(f"\n[输入] {prompt}") try: reply = light_generate(prompt) print(f"[输出] {reply}") except RuntimeError as e: if "CUDA out of memory" in str(e): print("[错误] 显存不足!请尝试减小 MAX_NEW_TOKENS 或启用4-bit量化") else: print(f"[错误] {str(e)}") print_gpu_memory() # 每次生成后显存状态 这是我的代码
04-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RZer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值