无论文勇闯秋招算法岗——奇富科技一面

面试官状态很好,思维活跃

问了deepspeed zero,zero 1 2 3 的区别?

模型显存占用大小,全参微调 32B 要占多少显存?

sft 全参和lora的区别,什么时候用全参,什么时候用lora,lora的rank是什么意思,有什么用

grpo是on policy还是off policy的?

grpo 和 gspo的区别?

做题

超时删除,一个类,init(),get(key) value,set() key value 存下来

import timeclass TimeCacheDict:
'''
'''
def __init__(self,expire_time:int):
    self.cache = {}
    self.expire_time = expire_time
    self.key_time = {}
def set(self,key:str,value:str):
    current_time = time.time()
    self.cache[key]=value
    self.key_time[key]=current_time
def get(self,key:str):
    current_time = time.time()
    if key not in self.cache:
        return None
    if current_time - self.key_time[key] > self.expire_time:
        del self.cache[key]
        del self.key_time[key]
        return None
    return self.cache[key]
cache=TimeCacheDict(3)
cache.set("key","value")
print(cache.get('key'))
time.sleep(4)
print(cache.get('key'))
cache.set("key","value")
print(cache.get('key'))
time.sleep(2)
print(cache.get('key'))

说了一些格式上的问题

然后说异步轮训或者队列先进先出的方案会更好。

异步轮训 + OrderedDict 方案:

import time
import asyncio
from collections import OrderedDict

class AsyncTimeCacheDict:
    def __init__(self, expire_time: int):
        self.cache = OrderedDict()
        self.expire_time = expire_time

    async def set(self, key: str, value: str):
        current_time = time.time()
        if key in self.cache:
            del self.cache[key]
        self.cache[key] = (value, current_time)
        await self._clean_expired_keys()

    async def get(self, key: str):
        current_time = time.time()
        if key not in self.cache:
            return None
        value, timestamp = self.cache[key]
        if current_time - timestamp > self.expire_time:
            del self.cache[key]
            return None
        return value

    async def _clean_expired_keys(self):
        current_time = time.time()
        keys_to_delete = []
        for key, (value, timestamp) in self.cache.items():
            if current_time - timestamp > self.expire_time:
                keys_to_delete.append(key)
            else:
                break
        for key in keys_to_delete:
            del self.cache[key]

# 测试代码
async def main():
    cache = AsyncTimeCacheDict(3)
    await cache.set("key1", "value1")
    await asyncio.sleep(1)
    await cache.set("key2", "value2")
    print(await cache.get("key1"))  # 输出: value1
    await asyncio.sleep(3)
    print(await cache.get("key1"))  # 输出: None
    print(await cache.get("key2"))  # 输出: None
    await cache.set("key3", "value3")
    print(await cache.get("key3"))  # 输出: value3

asyncio.run(main())

地点是北京。

业务就是多模态文档,做一些决策,会用到VLM Qwen-vl gpt-4o等模型。

全部评论
这个公司也玩大模型吗
点赞 回复 分享
发布于 昨天 12:28 北京

相关推荐

被子有点短:有了实习后会发现有实习也没用
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务