gate手续费怎么算的_AI辅助创作怎么收费「建议收藏」

gate手续费怎么算的_AI辅助创作怎么收费「建议收藏」序 OpenBMB/CPM-Bee 开源 昨天都快睡觉了,看到了微信群里的一条消息, 嗯嗯 写的不错,准备今天看看是什么玩意,感觉是想做成一个像java开发中的eclipse / IDEA那样的一个基

大家好,欢迎来到IT知识分享网。

OpenBMB/CPM-Bee 开源

昨天都快睡觉了,看到了微信群里的一条消息,

 🐝 基座模型CPM-Bee 发布啦! 
 百亿量级参数、万亿级高质量语料 🏅 评测中文稳居ZeroCLUE第一,英文媲美LLaMA ⚙️ 配套 OpenBMB 大模型系统生态支持 完全开源,允许商用 
 🔗 https://github.com/OpenBMB/CPM-Bee,点亮 打造你的专属模型吧! 

嗯嗯 写的不错,准备今天看看是什么玩意,感觉是想做成一个像java开发中的eclipse / IDEA那样的一个基础工具,想法很好

安装

安装很正常,有一个小插曲

Traceback (most recent call last):
File "<string>", line 2, in <module>
File "<pip-setuptools-caller>", line 34, in <module>
File "C:\Users\xxx\AppData\Local\Temp\pip-install-fnh8zism\bmtrain\_f44721c4bc3f4a989665b2c225f69095\setup.py", line 52, in <module>
CUDAExtension('bmtrain.nccl.\_C', \[

         Traceback (most recent call last):
            File "<string>", line 2, in <module>
            File "<pip-setuptools-caller>", line 34, in <module>
            File "C:\Users\xxx\AppData\Local\Temp\pip-install-fnh8zism\bmtrain_f44721c4bc3f4a989665b2c225f69095\setup.py", line 52, in <module>
              CUDAExtension('bmtrain.nccl._C', [

从CUDAExtension 就知道应该到有 CUDA的服务器上安装,因为我本身学习的笔记本没有GPU,嗯嗯,换到GPU的服务器上 执行ok

 error: subprocess-exited-with-error

  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [61 lines of output]
      running bdist_wheel
      C:\ProgramData\Anaconda3\envs\base03\lib\site-packages\torch\utils\cpp_extension.py:411: UserWarning: Attempted to use ninja as the BuildExtension backend but we could not find ninja.. Falling back to using the slow distutils backend.
        warnings.warn(msg.format('we could not find ninja.'))
      running build
      running build_py
      
ERROR: Failed building wheel for bmtrain
  Running setup.py clean for bmtrain
Failed to build bmtrain
ERROR: Could not build wheels for bmtrain, which is required to install pyproject.toml-based projects

跑了下

from cpm_live.generation.bee import CPMBeeBeamSearch
from cpm_live.models import CPMBeeTorch, CPMBeeConfig
from cpm_live.tokenizers import CPMBeeTokenizer
from opendelta import LoraModel
import torch

prepare your input data.
data_list = [
    {"input": "今天天气是真的<mask>", "prompt": "往后写一句话", "<ans>": {"<mask>": ""}},
    {"input": "北京市气象台提示,4月12日午后偏南风加大,阵风可达6级左右,南下的沙尘可能伴随回流北上进京,外出仍需注意<mask_0>,做好健康防护。天津市气象台也提示,受<mask_1>影响,我市4月12日有浮尘天气,PM10浓度<mask_2>。请注意关好门窗,老人儿童尽量减少户外活动,外出注意带好<mask_3>。” ","<ans>":{"<mask_0>":"","<mask_1>":"","<mask_2>":"","<mask_3>":""}},
]

# load model
config = CPMBeeConfig.from_json_file("cpm-bee-5b.json")
ckpt_path = "cpm-bee-5b-ckpt.pt"
tokenizer = CPMBeeTokenizer()
model = CPMBeeTorch(config=config)

# insert LoRA
# delta_model = LoraModel(backbone_model=model, modified_modules=["project_q", "project_v"], backend="hf")

# load checkpoints
model.load_state_dict(torch.load(ckpt_path))
model.cuda()

# use beam search
beam_search = CPMBeeBeamSearch(
    model=model,
    tokenizer=tokenizer,
)
for data in data_list:
    inference_results = beam_search.generate([data], max_length=100)
    for res in inference_results:
        print(res)
# output:
# {'input': '今天天气是真的<mask>', 'prompt': '往后写一句话', '<ans>': {'<mask>': '好啊!'}}
# {'input': '北京市气象台提示,4月12日午后偏南风加大,阵风可达6级左右,南下的沙尘可能伴随回流北上进京,外出仍需注意<mask_0>,做好健康防护。天津市气象台也提示,受<mask_1>影响,我市4月12日有浮尘天气,PM10浓度<mask_2>。请注意关好门窗,老人儿童尽量减少户外活动,外出注意带好<mask_3>。” ', '<ans>': {'<mask_0>': '防风', '<mask_1>': '沙尘天气', '<mask_2>': '较高', '<mask_3>': '口罩'}}

目前支持 文字填空、文本生成、翻译、问答、评分预测、文本选择题

简单测试下来,目前功能还有待增加和增强,可以当国内的备用方案

Embedding,给文本分分类

通过 API 计算 Token 数量

第一种计算 Token 数量的方式,是从 API 返回的结果里面获取。我们修改一下刚才的 Conversation 类,重新创建一个 Conversation2 类。和之前只有一个不同,ask 函数除了返回回复的消息之外,还会返回这次请求消耗的 Token 数。

class Conversation2:
def **init**(self, prompt, num\_of\_round):
self.prompt = prompt
self.num\_of\_round = num\_of\_round
self.messages = \[]
self.messages.append({"role": "system", "content": self.prompt})

    def ask(self, question):
        try:
            self.messages.append( {"role": "user", "content": question})
            response = openai.ChatCompletion.create(
                model="gpt-3.5-turbo",
                messages=self.messages,
                temperature=0.5,
                max_tokens=2048,
                top_p=1,
            )
        except Exception as e:
            print(e)
            return e

        message = response["choices"][0]["message"]["content"]
        num_of_tokens = response['usage']['total_tokens']
        self.messages.append({"role": "assistant", "content": message})
        
        if len(self.messages) > self.num_of_round*2 + 1:
            del self.messages[1:3]
        return message, num_of_tokens


conv2 = Conversation2(prompt, 3)
questions = [question1, question2, question3, question4, question5]
for question in questions:
    answer, num_of_tokens = conv2.ask(question)
    print("询问 {%s} 消耗的token数量是 : %d" % (question, num_of_tokens))输出结果:

输出结果


询问 {你是谁?} 消耗的token数量是 : 108
询问 {请问鱼香肉丝怎么做?} 消耗的token数量是 : 410
询问 {那蚝油牛肉呢?} 消耗的token数量是 : 733
询问 {我问你的第一个问题是什么?} 消耗的token数量是 : 767
询问 {我问你的第一个问题是什么?} 消耗的token数量是 : 774

如果你想减少token的消耗,可以做个总结,然后往下传递,这样可以一定程度的减少token的消耗,毕竟是根据token进行 收费的

ChatGPT 的对话模型用起来很方便,但是也有一点需要注意。就是在这个需要传送大量上下文的情况下,这个费用会比你想象的高。OpenAI 是通过模型处理的 Token 数量来收费的,但是要注意,这个收费是“双向收费”。它是按照你发送给它的上下文,加上它返回给你的内容的总 Token 数来计算花费的 Token 数量的。

这个从模型的原理上是合理的,因为每一个 Token,无论是你发给它的,还是它返回给你的,都需要通过 GPU 或者 CPU 运算。所以你发的上下文越长,它消耗的资源也越多。但是在使用中,你可能觉得我来了 10 轮对话,一共 1000 个 Token,就只会收 1000 个 Token 的费用。而实际上,第一轮对话是只消耗了 100 个 Token,但是第二轮因为要把前面的上下文都发送出去,所以需要 200 个,这样 10 轮下来,是需要花费 5500 个 Token,比前面说的 1000 个可多了不少。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/28748.html

(0)
上一篇 2023-09-24 17:45
下一篇 2023-09-24 18:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信